QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#386944#6845. TaxTheShuMoWA 0ms3944kbC++142.0kb2024-04-11 21:49:252024-04-11 21:49:25

Judging History

你现在查看的是最新测评结果

  • [2024-04-11 21:49:25]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3944kb
  • [2024-04-11 21:49:25]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long
#define pb push_back
#define ls u <<1
#define rs u << 1 |1
#define mid (l + r >> 1)
namespace IO {
    #define int long long 
    #define gh getchar
    inline int read(){char ch=gh();int x=0;bool t=0;while(ch<'0'||ch>'9')   t|=ch=='-',ch=gh();while(ch>='0'&&ch<='9') x=x*10+(ch^48),ch=gh();return t?-x:x;}
    inline char getc(){char ch=gh();while(ch<'a'||ch>'z') ch=gh();return ch;}
    inline void write(int x){if(x < 0){putchar('-');x = -x;}if(x > 9){write(x / 10);}putchar((x % 10 + '0'));}
}
using namespace IO;
using namespace std;
const int Maxm = 52 * 52, _ = 52;
int w[Maxm];
int c[Maxm], uu[Maxm], vv[Maxm];
struct N{int v, c;};
vector<N> G[Maxm];
int dep[_]; int vis[Maxm], ans[_];
map<pair<int,int>, int> mp;
void bfs(){
    queue<int> q;
    q.push(1); memset(dep, -1, sizeof(dep));
    dep[1] = 1;
    while(!q.empty()){
        int u = q.front(); q.pop();
        for(auto k : G[u]) { int v = k.v;
            if(dep[v] != -1) continue;
            dep[v] = dep[u] + 1;
            q.push(v);
        }
    }
}
void dfs(int u, int fa, int id){
    if(u != 1)ans[u] = min(ans[fa] + vis[c[id]] * w[c[id]], ans[u]);
    for(auto k : G[u]){ int v = k.v;
        if(v == fa) continue;
        if(dep[v] == dep[u] + 1){
            vis[c[k.c]]++;
            dfs(v, u, k.c);
            vis[c[k.c]]--;
        }
    }
}
signed main(){
    int n, m;
    n = read(), m = read();
    for(int i = 1; i <= m; i ++) w[i] = read();
    for(int i = 1; i <= m; i++){
        uu[i] = read(), vv[i] = read();
        c[i] = read();
        G[uu[i]].pb({vv[i],i});  G[vv[i]].pb({uu[i], i});
        mp[make_pair(uu[i], vv[i])] = i; mp[make_pair(vv[i], uu[i])] = i;
        if(m > 20) {
        	cout << uu[i] << " "<<vv[i] <<" "<< c[i]; puts("");
		}
    }bfs();
    memset(ans, 0x3f, sizeof ans); ans[1] = 0;
    dfs(1,1,0);
    for(int i = 2; i <= n; i++){
        cout << ans[i] << endl;
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3716kb

input:

5 6
1 8 2 1 3 9
1 2 1
2 3 2
1 4 1
3 4 6
3 5 4
4 5 1

output:

1
9
1
3

result:

ok 4 lines

Test #2:

score: 0
Accepted
time: 0ms
memory: 3944kb

input:

10 15
730 2163 6818 4647 9699 1037 2034 8441 2619 6164 464 4369 4500 6675 1641
1 6 2
3 6 1
3 2 1
9 2 2
7 3 1
6 5 1
5 3 2
3 10 1
10 2 2
5 10 1
8 2 2
9 8 1
7 4 2
4 5 2
4 10 2

output:

4353
2893
7219
2893
2163
4353
8679
8679
4353

result:

ok 9 lines

Test #3:

score: 0
Accepted
time: 0ms
memory: 3908kb

input:

10 15
847 2302 8846 8055 585 6541 6493 7165 5376 8551 836 2993 2700 9323 5119
2 1 5
2 3 3
3 10 3
10 4 3
8 3 4
10 8 1
3 7 3
4 5 3
5 8 5
6 3 3
8 6 2
6 5 4
9 10 2
7 9 4
5 9 4

output:

585
9431
53661
18656
27123
27123
17486
29425
27123

result:

ok 9 lines

Test #4:

score: -100
Wrong Answer
time: 0ms
memory: 3716kb

input:

20 30
4547 9278 5093 443 7292 7570 7138 9315 4114 723 9854 9584 294 1861 5478 2734 5967 7102 6137 9504 456 7980 9645 6571 336 5308 1035 8008 3128 4035
7 1 2
11 7 1
11 12 2
12 10 2
10 5 2
20 5 1
20 17 2
17 16 2
16 18 1
7 19 3
19 12 1
2 18 2
3 7 1
12 3 1
19 3 1
13 11 1
12 13 1
19 13 1
13 3 2
18 15 2
8...

output:

7 1 2
11 7 1
11 12 2
12 10 2
10 5 2
20 5 1
20 17 2
17 16 2
16 18 1
7 19 3
19 12 1
2 18 2
3 7 1
12 3 1
19 3 1
13 11 1
12 13 1
19 13 1
13 3 2
18 15 2
8 12 1
8 5 1
14 19 3
12 6 3
5 6 2
4 17 1
16 4 2
10 9 3
8 9 2
6 9 1
156984
13825
87491
41653
24011
9278
28012
37652
37474
13825
18918
18918
24557
156984
...

result:

wrong answer 1st lines differ - expected: '166078', found: '7 1 2'