UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#214639#2681. How Many Paths?erican1001837ms21660kbC++112.4kb2024-11-20 21:36:492024-11-20 23:09:16

answer

/*  Erica N  */
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define int long long
#define ull unsigned long long
#define pii pair<int, int>
#define ps second
#define pf first
#define itn int
#define rd read()
int read(){
    int xx = 0, ff = 1;char ch = getchar();
    while (ch < '0' || ch > '9') {if (ch == '-')ff = -1; ch = getchar();}
    while (ch >= '0' && ch <= '9')xx = xx * 10 + (ch - '0'), ch = getchar();
    return xx * ff;
}
// void write(int out) {
// 	if (out < 0)
// 		putchar('-'), out = -out;
// 	if (out > 9)
// 		write(out / 10);
// 	putchar(out % 10 + '0');
// }
#define cdbg(x...) do { cerr << #x << " -> "; err(x); } while (0)
void err() { cerr << endl; }
template<template<typename...> class T, typename t, typename... A>
void err(T<t> a, A... x) { for (auto v: a) cerr << v << ' '; err(x...); }
template<typename T, typename... A>
void err(T a, A... x) { cerr << a << ' '; err(x...); }


const int N = 5e5 + 5;
const int INF = 1e18;
const int M = 1e7;
const int MOD = 1e9 + 7;

vector<int> e[N];
bitset<N> vis,cir,dou,instk;
void add(int b,int a){
    e[a].pb(b);
}


void dfs(int x){
    vis[x]=1;
    instk[x]=1;
    for(auto v:e[x]){
        if(instk[v]){
            cir[v]=1;
        }else if(vis[v]){
            dou[v]=1;
        }else{
            dfs(v);
        }
    }


    instk[x]=0;
}

void dfs2(int x){
    cir[x]=1;
    for(auto v:e[x]){
        if(cir[v])continue;
        dfs2(v);
    }
}

void dfs3(int x){
    dou[x]=1;
    for(auto v:e[x]){
        if(dou[v])continue;
        dfs3(v);
    }
}

void solve() {
    // freopen(".in","r",stdin);
    // freopen(".out","w",stdout);


    int n=rd,m=rd;

    // for(int i=1;i<=n;i++){
    //     while(e[i].size())e[i].pop_back();
    // }
    for(int i=1;i<=m;i++){
        add(rd,rd);
    }

    

    dfs(1);

    for(int i=1;i<=n;i++){
        if(cir[i])dfs2(i);
    }
    for(int i=1;i<=n;i++){
        if(dou[i])dfs3(i);
    }

    for(int i=1;i<=n;i++){
        if(!vis[i])cout<<0<<' ';
        else if(cir[i])cout<<3<<' ';
        else if(dou[i])cout<<2<<' ';
        else cout<<1<<' ';
    }
    cout<<endl;
}

signed main(){
    int t=1;
    while(t--){
        // vis.reset();
        // cir.reset();
        // dou.reset();
        solve();
    }
}

Details

小提示:点击横条可展开更详细的信息

Test #1:

score: 5
Accepted
time: 104ms
memory: 19988kb

input:

50000 500000
27433 23782
1927 1159
20346 8794
27393 18828
40557 32372
29462 34217
31695 6752
2253 19...

output:

1 2 0 2 0 0 2 0 2 2 0 2 0 2 2 0 0 2 2 0 2 2 0 2 2 0 1 2 2 2 0 2 0 0 2 2 0 2 0 0 2 2 2 1 0 2 0 0 2 0 ...

result:

ok single line: '1 2 0 2 0 0 2 0 2 2 0 2 0 2 2 ... 0 1 1 2 2 0 2 0 2 2 0 0 0 0 2 '

Test #2:

score: 5
Accepted
time: 95ms
memory: 19960kb

input:

50000 500000
30894 37863
18739 43205
26461 20214
15741 957
38985 43365
15978 10327
7414 35300
17146 ...

output:

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

result:

ok single line: '1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 '

Test #3:

score: 5
Accepted
time: 99ms
memory: 19964kb

input:

50000 500000
38020 5057
495 7556
33072 22521
28583 41495
7199 42249
37197 26482
34166 16408
33429 19...

output:

1 0 2 0 0 2 0 0 0 2 2 2 2 0 0 0 0 2 2 2 0 2 2 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 2 0 2 2 0 1 0 ...

result:

ok single line: '1 0 2 0 0 2 0 0 0 2 2 2 2 0 0 ... 0 0 2 1 0 0 0 0 0 0 2 0 2 1 0 '

Test #4:

score: 5
Accepted
time: 93ms
memory: 19944kb

input:

50000 500000
9177 925
34439 28325
7099 9560
21204 48849
36028 23762
6297 46964
38036 31855
6292 1832...

output:

1 2 2 2 0 2 0 2 2 0 1 0 2 2 2 0 2 0 2 0 0 2 2 2 0 2 0 0 2 2 0 2 2 0 0 2 0 0 2 2 2 0 0 0 2 0 2 0 2 2 ...

result:

ok single line: '1 2 2 2 0 2 0 2 2 0 1 0 2 2 2 ... 1 0 0 0 2 0 0 1 0 2 2 0 2 2 0 '

Test #5:

score: 5
Accepted
time: 88ms
memory: 19956kb

input:

50000 500000
30632 1595
20715 35227
44119 45259
47444 36877
6942 14652
2864 18557
42367 19431
38615 ...

output:

1 2 0 0 0 0 0 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 ...

result:

ok single line: '1 2 0 0 0 0 0 2 0 0 0 0 0 0 2 ... 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 '

Test #6:

score: 5
Accepted
time: 88ms
memory: 19968kb

input:

50000 500000
33040 23079
35743 21197
49128 38373
36656 46198
17910 29433
45170 24921
28618 34080
100...

output:

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 2 2 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 2 ...

result:

ok single line: '1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 '

Test #7:

score: 5
Accepted
time: 95ms
memory: 19916kb

input:

50000 500000
5226 27470
49597 10290
40326 34407
17000 37084
26244 45989
48273 4706
15981 19231
26219...

output:

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

result:

ok single line: '1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 '

Test #8:

score: 5
Accepted
time: 105ms
memory: 19944kb

input:

50000 500000
16952 41617
2923 24354
4446 41320
8355 41065
23930 48553
5990 23289
30279 14635
16174 1...

output:

1 0 2 2 2 2 0 0 0 2 1 0 0 2 0 0 0 0 0 2 2 0 2 0 1 0 0 2 0 1 2 0 2 0 2 0 2 2 0 0 0 2 2 2 2 0 0 0 2 2 ...

result:

ok single line: '1 0 2 2 2 2 0 0 0 2 1 0 0 2 0 ... 0 0 2 2 2 0 0 1 2 1 0 2 0 2 0 '

Test #9:

score: 5
Accepted
time: 98ms
memory: 19904kb

input:

50000 500000
40140 17583
24758 1389
12331 1829
43385 23986
38136 28093
21088 33706
44519 38558
39908...

output:

1 2 0 2 2 0 0 2 0 1 2 2 2 2 2 2 0 2 0 2 2 0 2 0 2 2 0 0 2 0 2 2 0 0 2 2 0 2 2 2 2 2 2 2 2 2 2 0 0 2 ...

result:

ok single line: '1 2 0 2 2 0 0 2 0 1 2 2 2 2 2 ... 2 2 1 0 0 0 2 0 0 2 0 0 2 0 2 '

Test #10:

score: 5
Accepted
time: 96ms
memory: 19952kb

input:

50000 500000
26128 23615
14751 3541
9682 26585
39984 12641
32407 34611
40404 13491
49939 11363
19404...

output:

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

result:

ok single line: '1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 '

Test #11:

score: 5
Accepted
time: 71ms
memory: 21648kb

input:

100000 500000
1 2
1 3
1 8
1 10
1 11
1 17
1 48
1 100
1 284
1 3021
1 7857
1 16097
1 18352
1 17333
1 81...

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 1 1 1 1 1 ...

result:

ok single line: '1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 ... 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 '

Test #12:

score: 5
Accepted
time: 93ms
memory: 21636kb

input:

100000 500000
1 2
1 4
1 5
1 7
1 8
1 13
1 15
1 587
1 6125
1 8728
1 1965
1 12132
1 8992
1 17819
1 1358...

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok single line: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... 3 3 3 3 3 3 3 3 3 3 3 0 0 3 3 '

Test #13:

score: 5
Accepted
time: 84ms
memory: 21644kb

input:

100000 500000
1 2
1 6
1 45
1 68
1 79
1 496
1 546
1 1119
1 1510
1 1665
1 3262
1 4727
1 4879
1 5430
1 ...

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok single line: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 '

Test #14:

score: 5
Accepted
time: 76ms
memory: 21660kb

input:

100000 500000
1 2
1 4
1 8
1 16
1 28
1 58
1 85
1 96
1 106
1 241
1 3315
1 3551
1 13
1 1969
1 12587
1 1...

output:

1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok single line: '1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 ... 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 '

Test #15:

score: 5
Accepted
time: 88ms
memory: 21656kb

input:

100000 500000
1 2
1 7
1 13
1 15
1 18
1 74
1 277
1 652
1 1116
1 8926
1 9947
1 12793
1 17696
1 1742
1 ...

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok single line: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 '

Test #16:

score: 5
Accepted
time: 94ms
memory: 21624kb

input:

100000 500000
1 2
1 4
1 5
1 7
1 8
1 21
1 26
1 29
1 31
1 254
1 385
1 451
1 678
1 1278
1 2323
1 3775
1...

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 ...

result:

ok single line: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 '

Test #17:

score: 5
Accepted
time: 99ms
memory: 21648kb

input:

100000 500000
1 2
1 15
1 44
1 60
1 183
1 365
1 582
1 1768
1 1793
1 6193
1 9585
1 12293
1 447
1 9529
...

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 ...

result:

ok single line: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 '

Test #18:

score: 5
Accepted
time: 96ms
memory: 21648kb

input:

100000 500000
1 2
1 3
1 4
1 65
1 103
1 282
1 3710
1 5403
1 7559
1 4446
1 5382
1 5028
1 18244
1 5690
...

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 1 1 2 1 1 1 2 1 1 1 1 1 2 ...

result:

ok single line: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 '

Test #19:

score: 5
Accepted
time: 90ms
memory: 21644kb

input:

100000 500000
1 2
1 6
1 310
1 510
1 643
1 667
1 4289
1 13736
1 15465
1 7212
1 8416
1 8424
1 11633
1 ...

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 2 2 2 1 1 ...

result:

ok single line: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 '

Test #20:

score: 5
Accepted
time: 85ms
memory: 21636kb

input:

100000 500000
1 2
1 4
1 6
1 7
1 10
1 16
1 247
1 433
1 540
1 2050
1 2671
1 13116
1 9660
1 18620
1 107...

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 ...

result:

ok single line: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 '