UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#214613#2681. How Many Paths?nodgd100346ms8200kbC++112.7kb2024-11-20 20:38:092024-11-20 23:06:03

answer

#include <bits/stdc++.h>

using namespace std;

const int BUFFER_SIZE = 1 << 20;
char rb[BUFFER_SIZE], *rp = rb, *rt = rb;
inline char read_char() {
    return rp == rt ? (rt = rb + fread(rb, 1, BUFFER_SIZE, stdin), rp = rb, *rp ++) : *rp ++;
}
inline int read_int() {
    int x = 0;
    char ch = read_char(), flag = 0;
    while (ch != '-' && (ch < '0' || ch > '9')) {
        ch = read_char();
    }
    if (ch == '-') {
        flag = 1;
        ch = read_char();
    }
    for (x = 0; ch >= '0' && ch <= '9'; ch = read_char()) {
        x = x * 10 + (ch - '0');
    }
    return flag ? -x : x;
}

char wb[BUFFER_SIZE], *wp = wb;
inline void write_flush() {
    fwrite(wb, 1, wp - wb, stdout);
    wp = wb;
}
inline void write_char(char c) {
    *wp ++ = c;
    if (wp == wb + BUFFER_SIZE) {
        write_flush();
    }
}
inline void write_int(int x) {
    if (x == 0) {
        write_char('0');
    } else if (x < 0) {
        write_char('-');
        x = -x;
    }
    static char b[32], i;
    for (i = 1; x; i ++) {
        b[i] = x % 10 + '0';
        x /= 10;
    }
    for (i --; i; i --) {
        write_char(b[i]);
    }
}

const int MAX_N = 100000 + 5;
const int MAX_M = 500000 + 5;

int N, M;
int elast[MAX_N], ey[MAX_M], enext[MAX_M];
int vis[MAX_N], ind[MAX_N], f[MAX_N], q[MAX_N], qh, qt;


int main() {
    N = read_int(), M = read_int();
    for (int i = 1; i <= M; i ++) {
        int x = read_int(), y = read_int();
        ey[i] = y, enext[i] = elast[x], elast[x] = i;
    }
    qh = 0, qt = 1, q[0] = 1;
    vis[1] = 1;
    while (qh != qt) {
        int u = q[qh ++];
        for (int j = elast[u], v; j; j = enext[j]) {
            if (!vis[v = ey[j]]) {
                vis[v] = 1;
                q[qt ++] = v;
            }
        }
    }
    for (int i = 1; i <= N; i ++) {
        if (!vis[i]) continue;
        for (int j = elast[i]; j; j = enext[j]) {
            ind[ey[j]] ++;
        }
    }
    if (ind[1]) {
        for (int i = 1; i <= N; i ++) {
            write_int(vis[i] ? 3 : 0), write_char(i < N ? ' ' : '\n');
        }
    } else {
        qh = 0, qt = 1, q[0] = 1;
        vis[1] = 2, f[1] = 1;
        while (qh != qt) {
            int u = q[qh ++];
            for (int j = elast[u], v; j; j = enext[j]) {
                if (!-- ind[v = ey[j]]) {
                    vis[v] = 2;
                    q[qt ++] = v;
                }
                f[v] += f[u];
                f[v] = min(f[v], 2);
            }
        }
        for (int i = 1; i <= N; i ++) {
            int res = vis[i] == 1 ? 3 : vis[i] == 0 ? 0 : f[i];
            write_int(res), write_char(i < N ? ' ' : '\n');
        }
    }
    write_flush();
    return 0;
}

详细

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

Test #1:

score: 5
Accepted
time: 19ms
memory: 7064kb

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 0 1 1 2 2 0 2 0 2 2 0 0 0 0 2'

Test #2:

score: 5
Accepted
time: 10ms
memory: 6616kb

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 0'

Test #3:

score: 5
Accepted
time: 19ms
memory: 7032kb

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 0 2 1 0 0 0 0 0 0 2 0 2 1 0'

Test #4:

score: 5
Accepted
time: 24ms
memory: 7072kb

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 ...2 1 0 0 0 2 0 0 1 0 2 2 0 2 2 0'

Test #5:

score: 5
Accepted
time: 10ms
memory: 6988kb

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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0'

Test #6:

score: 5
Accepted
time: 16ms
memory: 6980kb

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 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0'

Test #7:

score: 5
Accepted
time: 9ms
memory: 6876kb

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 0'

Test #8:

score: 5
Accepted
time: 18ms
memory: 7036kb

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 0 2 2 2 0 0 1 2 1 0 2 0 2 0'

Test #9:

score: 5
Accepted
time: 29ms
memory: 7080kb

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 2 1 0 0 0 2 0 0 2 0 0 2 0 2'

Test #10:

score: 5
Accepted
time: 11ms
memory: 6708kb

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 0'

Test #11:

score: 5
Accepted
time: 18ms
memory: 8196kb

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 3'

Test #12:

score: 5
Accepted
time: 14ms
memory: 8200kb

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 3 0 0 3 3'

Test #13:

score: 5
Accepted
time: 14ms
memory: 8196kb

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 3'

Test #14:

score: 5
Accepted
time: 15ms
memory: 8196kb

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 3'

Test #15:

score: 5
Accepted
time: 20ms
memory: 8200kb

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 3'

Test #16:

score: 5
Accepted
time: 19ms
memory: 8196kb

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 3'

Test #17:

score: 5
Accepted
time: 20ms
memory: 8196kb

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 3'

Test #18:

score: 5
Accepted
time: 16ms
memory: 8196kb

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 3'

Test #19:

score: 5
Accepted
time: 21ms
memory: 8196kb

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 3'

Test #20:

score: 5
Accepted
time: 24ms
memory: 8196kb

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 3'