QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#210889#7177. Many Many Cyclesucup-team191#WA 3ms4116kbC++142.4kb2023-10-11 21:10:392023-10-11 21:10:39

Judging History

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

  • [2023-10-11 21:10:39]
  • 评测
  • 测评结果:WA
  • 用时:3ms
  • 内存:4116kb
  • [2023-10-11 21:10:39]
  • 提交

answer

#include <bits/stdc++.h>
#define X first
#define Y second
#define x first
#define y second
using namespace std;
using ll=long long;
using pii=pair<int,int>;
using vi=vector<int>;
using vl=vector<ll>;
#define pb push_back
#define all(a) begin(a),end(a)

const int N=10010,MOD=1e9+7;
const char en='\n';
const ll LLINF=1ll<<60;

int n, m;
vector < pii > v[N];
ll dep[N], d;
int par[N][15], deep[N];
vector < pii > luk;
vector < int > smece;

void dfs(int x, int lst) {
	par[x][0] = lst;
	for(int j = 1;j < 15;j++)
		par[x][j] = par[par[x][j - 1]][j - 1];
	for(pii tmp : v[x]) {
		if(tmp.Y == lst) continue;
		if(dep[tmp.Y] != -1 && dep[tmp.Y] < dep[x]) {
			luk.pb({x, tmp.Y});
			smece.pb(tmp.X);
		} else if(dep[tmp.Y] == -1) {
			dep[tmp.Y] = dep[x] + tmp.X;
			deep[tmp.Y] = deep[x] + 1;
			dfs(tmp.Y, x);
		}
	}
}

int digni(int x, int k){
	for(int j = 0;j < 15;j++)
		if(k & (1 << j)) x = par[x][j];
	return x;
}

ll gcdl(ll A, ll B) {
    if(!B) return A;
    return gcdl(B, A % B);
}

int main()
{

	ios_base::sync_with_stdio(0);
	cin.tie(0);
	memset(dep, -1, sizeof(dep));
	cin >> n >> m;
	for(int i = 0;i < m;i++) {
		int a, b, c; cin >> a >> b >> c;
		v[a].pb({c, b});
		v[b].pb({c, a});
	}
	ll d = 0;
	for(int x = 1;x <= n;x++) {
		if(dep[x] != -1) continue;
		dep[x] = 0; dfs(x, x); deep[x] = 0;
		for(int i = 0;i < (int)luk.size();i++) {
		//	cout << " luk " << luk[i].x << " " << luk[i].y << std::endl;
			d = gcdl(d, dep[luk[i].x] - dep[luk[i].y] + smece[i]);
			for(int j = 0;j < (int)luk.size();j++) {
				if(i == j) continue;
				if(dep[luk[i].y] > dep[luk[j].y]) continue;
				if(dep[luk[i].x] > dep[luk[j].x]) continue;
				if(dep[luk[j].y] > dep[luk[i].x]) continue;
				if(digni(luk[j].x, deep[luk[j].x] - deep[luk[i].x]) != luk[i].x) continue;
				d = gcdl(d, 2LL * (dep[luk[i].x] - dep[luk[j].y]));
			}
		}
		for(int i = 0;i < (int)luk.size();i++) {
		//	cout << " luk " << luk[i].x << " " << luk[i].y << std::endl;
			d = gcdl(d, dep[luk[i].x] - dep[luk[i].y] + smece[i]);
			for(int j = 0;j < (int)luk.size();j++) {
				if(i == j) continue;
				if(dep[luk[i].y] > dep[luk[j].y]) continue;
				if(dep[luk[i].x] < dep[luk[j].x]) continue;
				if(digni(luk[j].x, deep[luk[j].x] - deep[luk[i].x]) != luk[i].x) continue;
				d = gcdl(d, 2LL * (dep[luk[i].x] - dep[luk[j].y]));
			}
		}
		luk.clear(); smece.clear();
	}
	cout << d << endl;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3984kb

input:

4 4
1 2 1
2 3 1
3 4 1
4 1 1

output:

4

result:

ok answer is '4'

Test #2:

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

input:

4 5
1 2 1
1 3 2
1 4 1
2 3 1
3 4 1

output:

4

result:

ok answer is '4'

Test #3:

score: 0
Accepted
time: 1ms
memory: 3932kb

input:

20 50
1 2 8
1 3 1
3 4 5
3 5 9
3 6 5
6 7 6
7 8 8
2 9 2
8 10 3
8 11 7
8 12 5
3 13 4
7 14 3
6 15 7
9 16 6
8 17 7
16 18 9
16 19 3
18 20 10
11 3 2
17 1 1
16 2 2
15 1 1
10 3 2
9 1 2
19 2 1
6 1 2
7 3 1
17 3 2
15 3 2
8 6 2
5 1 2
8 1 2
12 1 1
12 7 1
4 1 2
18 2 1
11 7 1
14 1 1
18 1 1
18 9 1
10 6 1
14 3 2
20 2...

output:

2

result:

ok answer is '2'

Test #4:

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

input:

20 50
1 2 18468
1 3 26501
3 4 15725
3 5 29359
3 6 24465
6 7 28146
7 8 16828
2 9 492
8 10 11943
8 11 5437
8 12 14605
3 13 154
7 14 12383
6 15 18717
9 16 19896
8 17 21727
16 18 11539
16 19 19913
18 20 26300
11 3 2
17 1 1
16 2 2
15 1 1
10 3 2
9 1 2
19 2 1
6 1 2
7 3 1
17 3 2
15 3 2
8 6 2
5 1 2
8 1 2
12 ...

output:

1

result:

ok answer is '1'

Test #5:

score: 0
Accepted
time: 1ms
memory: 3932kb

input:

100 150
1 2 184676335
1 3 191705725
1 4 293606963
1 5 57078146
2 6 168279962
6 7 29961943
5 8 54392392
5 9 39020154
5 10 123837422
7 11 197199896
3 12 217274772
7 13 18709913
6 14 263007036
11 15 287053812
3 16 303347674
9 17 151417712
17 18 68705548
15 19 326652758
12 20 128598724
2 21 275290779
11...

output:

3

result:

ok answer is '3'

Test #6:

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

input:

100 130
1 2 184676335
1 3 191705725
1 4 293606963
1 5 57078146
2 6 168279962
6 7 29961943
5 8 54392392
5 9 39020154
5 10 123837422
7 11 197199896
3 12 217274772
7 13 18709913
6 14 263007036
11 15 287053812
3 16 303347674
9 17 151417712
17 18 68705548
15 19 326652758
12 20 128598724
2 21 275290779
11...

output:

7

result:

ok answer is '7'

Test #7:

score: 0
Accepted
time: 1ms
memory: 4012kb

input:

100 200
1 2 184676335
1 3 191705725
1 4 293606963
1 5 57078146
2 6 168279962
6 7 29961943
5 8 54392392
5 9 39020154
5 10 123837422
7 11 197199896
3 12 217274772
7 13 18709913
6 14 263007036
11 15 287053812
3 16 303347674
9 17 151417712
17 18 68705548
15 19 326652758
12 20 128598724
2 21 275290779
11...

output:

4

result:

ok answer is '4'

Test #8:

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

input:

100 190
1 2 184676335
1 3 191705725
1 4 293606963
1 5 57078146
2 6 168279962
6 7 29961943
5 8 54392392
5 9 39020154
5 10 123837422
7 11 197199896
3 12 217274772
7 13 18709913
6 14 263007036
11 15 287053812
3 16 303347674
9 17 151417712
17 18 68705548
15 19 326652758
12 20 128598724
2 21 275290779
11...

output:

2

result:

ok answer is '2'

Test #9:

score: 0
Accepted
time: 3ms
memory: 4116kb

input:

1000 1500
1 2 184676335
1 3 191705725
1 4 293606963
1 5 57078146
2 6 168279962
6 7 29961943
5 8 54392392
5 9 39020154
5 10 123837422
7 11 197199896
3 12 217274772
7 13 18709913
6 14 263007036
11 15 287053812
3 16 303347674
9 17 151417712
17 18 68705548
15 19 326652758
12 20 128598724
2 21 275290779
...

output:

3

result:

ok answer is '3'

Test #10:

score: -100
Wrong Answer
time: 3ms
memory: 4056kb

input:

1000 1500
1 2 184676335
1 3 191705725
1 4 293606963
1 5 57078146
2 6 168279962
6 7 29961943
5 8 54392392
5 9 39020154
5 10 123837422
7 11 197199896
3 12 217274772
7 13 18709913
6 14 263007036
11 15 287053812
3 16 303347674
9 17 151417712
17 18 68705548
15 19 326652758
12 20 128598724
2 21 275290779
...

output:

3

result:

wrong answer expected '1', found '3'