QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#408632#7177. Many Many CyclesSortingWA 1ms3784kbC++202.2kb2024-05-10 20:30:472024-05-10 20:30:47

Judging History

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

  • [2024-05-10 20:30:47]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3784kb
  • [2024-05-10 20:30:47]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
typedef unsigned long long ull ;
typedef pair < int , int > pii ;
typedef vector < int > vi ;
#define fi first
#define se second
mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());

#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()

const int MAXN = 1e4 + 7 ;

int n , m ;
vector < pii > v[ MAXN ] ;
ll lvl[ MAXN ] ;
struct edge {
    int x , y , len ;
};
edge hh[ MAXN ] ;

ll cycle_len = -1 ;

int used[ MAXN ] ;
void dfs ( int x , int prv ) {
    used[ x ] = 1 ;
    for ( auto [ y , len ] : v[ x ] ) {
        if ( y == prv ) { continue ; }
        if ( used[ y ] == 0 ) {
            lvl[ y ] = lvl[ x ] + len ;
            dfs ( y , x ) ;
        }
        else {
            if ( used[ y ] == 1 ) {
                if ( cycle_len < 0 ) { cycle_len = len + lvl[ x ] - lvl[ y ] ; }
            }
        }
    }
    used[ x ] = 2 ; 
}

bool f ( ll cand ) {
    for ( int i = 1 ; i <= m ; ++ i ) {
        ll diff = ( ( lvl[ hh[ i ].x ] % cand ) - ( lvl[ hh[ i ].y ] % cand ) + cand ) % cand ;
        if ( diff != ( hh[ i ].len % cand ) && diff != cand - ( hh[ i ].len % cand ) ) { return false ; }
    }
    return true ;
}

void solve ( ) {
    cin >> n >> m ;
    for ( int i = 1 ; i <= m ; ++ i ) {
        cin >> hh[ i ].x >> hh[ i ].y >> hh[ i ].len ;
        v[ hh[ i ].x ].push_back ( { hh[ i ].y , hh[ i ].len } ) ;
        v[ hh[ i ].y ].push_back ( { hh[ i ].x , hh[ i ].len } ) ;
    }
    dfs ( 1 , -1 ) ;
    if ( cycle_len < 0 ) {
        cout << "0\n" ;
        return ;
    }
    vector < ll > divs ;
    for ( ll i = 1 ; i * i <= cycle_len ; ++ i ) {
        if ( ( cycle_len % i ) == 0 ) {
            divs.push_back ( i ) ;
            if ( i * i != cycle_len ) { divs.push_back ( cycle_len / i ) ; }
        }
    }
    sort ( divs.begin ( ) , divs.end ( ) , greater < ll > ( ) ) ;
    for ( auto x : divs ) {
        if ( f ( x ) == true ) {
            cout << x << "\n" ;
            return ;
        }
    }
}

int main ( ) {
    ios_base :: sync_with_stdio ( false ) ;
    cin.tie ( NULL ) ;
    int t = 1 ; // cin >> t ;
    while ( t -- ) { solve ( ) ; }
    return 0 ;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: 1ms
memory: 3784kb

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

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

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

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: 1ms
memory: 3624kb

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

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

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:

4

result:

wrong answer expected '2', found '4'