UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#214640#2681. How Many Paths?shiruiheng154213ms30800kbC++112.4kb2024-11-20 21:39:082024-11-20 23:09:23

answer

#include <bits/stdc++.h>
using namespace std;
/*
#include <ext/pb_ds/priority_queue.hpp>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
__gnu_pbds::tree<std::pair<int, int>, __gnu_pbds::null_type,
                 std::less<std::pair<int, int>>, __gnu_pbds::rb_tree_tag,
                 __gnu_pbds::tree_order_statistics_node_update>
    trr;
using namespace __gnu_cxx;
//*/
#define ll long long
#define pi pair<ll, ll>
#define fi first
#define se second
#define N 111111
ll st[N], bj[N], d[N], ins[N], vis[N], pos, n, m, x, y, scc[N], dfn[N], low[N], sccCnt, tot, ans[N];
#define ps(u) (st[++pos] = (u))
#define pop2() (st[pos--])
char s[11];
vector<ll> g[N], g1[N], fa[N];
void print(){
	for(int i = 1 ; i <= n ; i++)
		printf("%lld%c", ans[i], " \n"[i == n]);
}
void debug(ll *a, ll cnt){
	if(cnt <= 0)
		return;
	cerr << *a << " \n"[cnt == 1];
	debug(a + 1, cnt - 1);
}
void check(int u){
	if(ans[u] == 3)
		return;
	ll cnt = 0;
	for(auto v : fa[u]){
		if(ans[v] == 3){
			ans[u] = 3;
			return;
		}
		cnt += ans[v];
	}
	ans[u] = min(2ll, max(1ll, cnt));
	//cerr << u << " " << cnt << "\n";
}
void add(int u, int v, bool bj = false){
	g[u].push_back(v);
	fa[v].push_back(u);
	if(bj)
		add(v, u);
}
void tarjan(int u){
	low[u] = dfn[u] = ++tot;
	ps(u);
	ins[u] = true;
	for(auto v : g[u]){
		if(!dfn[v]){
			tarjan(v);
			low[u] = min(low[u], low[v]);
		}
		else if(ins[v]){
			low[u] = min(low[u], dfn[v]);
		}
	}
	if(dfn[u] == low[u]){
		++sccCnt;
		int v;
		do{
			scc[v = pop2()] = sccCnt;
			ins[v] = false;
		}while(v != u);
	}
}
void dfs(int u, int f){
	if(ans[u])
		return;
	ans[u] = 1;
	if(bj[scc[u]])
		ans[u] = 3;
	for(auto v : g[u]){
		dfs(v, u);
	}
}
int main()
{
	scanf("%lld%lld", &n, &m);
	for(int i = 1 ; i <= m ; i++){
		scanf("%lld%lld", &x, &y);
		add(x, y);
		d[y]++;
	}
	tarjan(1);
	for(int u = 1 ; u <= n ; u++){
		for(auto v : g[u]){
			if(scc[u] == scc[v])
				bj[scc[u]] = 1;
		}
	}
	dfs(1, 1);
	queue<int> q;
	q.push(1);
	while(q.size()){
		int u = q.front();
		q.pop();
		for(auto v : g[u])
			if(!--d[v]){
				q.push(v);
				check(v);
			}
	}
	/*
	for(int u = 1 ; u <= n ; u++)
		for(auto v : fa[u])
			cerr << ans[v] << "(" << v << ")" << "->" << u << "\n";
	//*/
	print();
	return 0;
}
/*
4 4
3 2
2 3
3 4
4 3

*/

详细

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

Test #1:

score: 0
Wrong Answer
time: 174ms
memory: 25488kb

input:

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

output:

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

result:

wrong answer 1st lines differ - expected: '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 ...

Test #2:

score: 5
Accepted
time: 193ms
memory: 23936kb

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

input:

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

output:

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

result:

wrong answer 1st lines differ - expected: '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 ...

Test #4:

score: 0
Wrong Answer
time: 194ms
memory: 25452kb

input:

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

output:

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

result:

wrong answer 1st lines differ - expected: '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 ...

Test #5:

score: 0
Wrong Answer
time: 216ms
memory: 25464kb

input:

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

output:

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

result:

wrong answer 1st lines differ - expected: '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 ...

Test #6:

score: 0
Wrong Answer
time: 228ms
memory: 25448kb

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

result:

wrong answer 1st lines differ - expected: '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 ...

Test #7:

score: 5
Accepted
time: 216ms
memory: 24612kb

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

input:

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

output:

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

result:

wrong answer 1st lines differ - expected: '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 ...

Test #9:

score: 0
Wrong Answer
time: 215ms
memory: 25448kb

input:

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

output:

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

result:

wrong answer 1st lines differ - expected: '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 ...

Test #10:

score: 5
Accepted
time: 196ms
memory: 24164kb

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

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:

wrong answer 1st lines differ - expected: '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 ...

Test #12:

score: 0
Wrong Answer
time: 205ms
memory: 30752kb

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:

wrong answer 1st lines differ - expected: '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 ...

Test #13:

score: 0
Wrong Answer
time: 214ms
memory: 30764kb

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:

wrong answer 1st lines differ - expected: '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 ...

Test #14:

score: 0
Wrong Answer
time: 210ms
memory: 30784kb

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:

wrong answer 1st lines differ - expected: '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 ...

Test #15:

score: 0
Wrong Answer
time: 204ms
memory: 30784kb

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:

wrong answer 1st lines differ - expected: '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 ...

Test #16:

score: 0
Wrong Answer
time: 203ms
memory: 30732kb

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:

wrong answer 1st lines differ - expected: '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 ...

Test #17:

score: 0
Wrong Answer
time: 210ms
memory: 30800kb

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:

wrong answer 1st lines differ - expected: '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 ...

Test #18:

score: 0
Wrong Answer
time: 224ms
memory: 30776kb

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:

wrong answer 1st lines differ - expected: '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 ...

Test #19:

score: 0
Wrong Answer
time: 221ms
memory: 30752kb

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:

wrong answer 1st lines differ - expected: '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 ...

Test #20:

score: 0
Wrong Answer
time: 243ms
memory: 30740kb

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:

wrong answer 1st lines differ - expected: '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 ...