QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#245065#7177. Many Many Cyclesstd_abs#WA 1ms4092kbC++172.2kb2023-11-09 18:22:182023-11-09 18:22:19

Judging History

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

  • [2023-11-09 18:22:19]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:4092kb
  • [2023-11-09 18:22:18]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
#define pb push_back
#define all(a) a.begin(), a.end()
#define sz(a) ((int)a.size())
const int mod = 998244353, N = 5005, M = 10005;
typedef pair<int, int> pi;
vector<int> g[N];
pii e[M];
ll w[M];
int pa[N], dep[N], low[N], _id;
vector<int> bcc[N], stk;
ll wd[N];
bool vis[N];

int go(int ei, int i) {
    return e[ei].first ^ e[ei].second ^ i;
}

void dfs(int i, int p) {
    dep[i] = low[i] = ~p ? dep[p] + 1 : 0;
    stk.pb(i), pa[i] = p, vis[i] = true;
    for (int ei : g[i]) if (go(ei, i) != p) {
        int j = go(ei, i);
        if (!vis[j]) {
            wd[j] = wd[i] + w[ei];
            dfs(j, i);
            low[i] = min(low[i], low[j]);
            if (low[j] >= dep[i]) {
                int id = _id++, x;
                do {
                    x = stk.back(), stk.pop_back();
                    bcc[x].push_back(id);
                } while (x != j);
                bcc[i].push_back(id);
            }
            else
                low[i] = min(low[i], dep[j]);
        }
    }
}

ll gcd(int i, int j) {return j ? gcd(j, i % j) : i;}

int main() {
    ios::sync_with_stdio(false), cin.tie(0);
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < m; ++i) {
        int x, y, z;
        cin >> x >> y >> z;
        --x, --y;
        g[x].push_back(i), g[y].push_back(i);
        e[i] = pi(x, y);
        w[i] = z;
    }
    for (int i = 0; i < n; ++i)
        if (!vis[i])
            dfs(i, -1);
    fill(vis, vis + n, false);
    vector<int> ord(n);
    iota(all(ord), 0);
    sort(all(ord), [&](int i, int j) {return dep[i] < dep[j];});
    ll ans = 0;
    for (int i : ord) {
        for (int ei : g[i]) {
            int j = go(ei, i);
            if (pa[j] != i && dep[j] > dep[i]) {
                vector<int> tmp;
                tmp.pb(i);
                tmp.pb(j);
                while (!vis[tmp.back()])
                    vis[tmp.back()] = true, tmp.pb(pa[tmp.back()]);
                ans = gcd(ans, gcd(w[ei] + wd[j] - wd[i], w[ei] + wd[j] - wd[tmp.back()] - (wd[tmp.back()] - wd[i])));
            }
        }
    }
    cout << abs(ans) << '\n';
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: 4080kb

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: 0ms
memory: 3788kb

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: 3820kb

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: 0ms
memory: 4092kb

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: -100
Wrong Answer
time: 0ms
memory: 3864kb

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:

1

result:

wrong answer expected '7', found '1'