QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#407496#4511. Wonderland ChaseGTAH0 1912ms16368kbC++142.0kb2024-05-08 20:03:422024-05-08 20:03:43

Judging History

This is the latest submission verdict.

  • [2024-05-08 20:03:43]
  • Judged
  • Verdict: 0
  • Time: 1912ms
  • Memory: 16368kb
  • [2024-05-08 20:03:42]
  • Submitted

answer

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int N = 1e5 + 5, M = 2e5 + 5;
int n,m,a,b,T;
int head[N],to[M*2],nxt[M*2],cnt;
int dfn[N],low[N],tim;
int disa[N],disb[N],visa[N],visb[N];
int h[N];
queue<int> q;
void add(int u,int v) {
	to[++cnt] = v;
	nxt[cnt] = head[u];
	head[u] = cnt;
} 
int dfs(int u,int f) {
	dfn[u] = low[u] = ++tim;
	low[u] += 1;
	for(int e = head[u]; e; e = nxt[e]) {
		int v = to[e];
		if(v == f) continue;
		if(!dfn[v]) low[u] = min(dfs(v,u), low[u]);
		else low[u] = min(dfn[v], low[u]);
	}
	if(low[u] <= dfn[u]) h[u] = 1;
	return low[u];
}
void bfs(int s,int dis[],int vis[]) {
	q.push(s);
	dis[s] = 0;
	while(!q.empty()) {
		int u = q.front();
		q.pop();
		for(int e = head[u]; e; e = nxt[e]) {
			int v = to[e];
			if(dis[u] + 1 < dis[v]) {
				dis[v] = dis[u] + 1;
				q.push(v);
			}
		}
	}
	return;
} 
void slove(int T) {
	cin>>n>>m>>a>>b;
	for(int i=1,u,v;i<=m;++i) {
		cin>>u>>v;
		add(u,v);
		add(v,u);
	}
	dfs(b,0);
	for(int i=1;i<=n;++i) {
		cout<<h[i];
	}cout<<endl;
	bfs(b,disb,visb);
	for(int i=1;i<=n;++i) {
		cout<<disb[i]<<' ';
	}cout<<endl;
	bfs(a,disa,visa);
	for(int i=1;i<=n;++i) {
		cout<<disb[i]<<' ';
	}cout<<endl;
	
	if(disb[a] == 0x3f3f3f3f) {
		cout<<"Case #"<<T<<": SAFE"<<'\n';
		return;
	}
	int mx = 0;
	for(int i=1;i<=n;++i) {
		if(disa[i] < disb[i]) {
			if(h[i]) {
				cout<<"Case #"<<T<<": SAFE"<<'\n';
				return;
			} else {
				mx = max(mx, disb[i] * 2);
			}
		}
	}
	cout<<"Case #"<<T<<": "<<mx<<'\n';
	return;
}
void clear(){
	cnt = 0, tim = 0;
	memset(head,0,sizeof(head));
	memset(dfn,0,sizeof(dfn));
	memset(low,0,sizeof(low));
	memset(disa,0x3f,sizeof(disa));
	memset(disb,0x3f,sizeof(disb));
	memset(visa,0,sizeof(visa));
	memset(visb,0,sizeof(visb));
	memset(h,0,sizeof(h));
}
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>T;
	for(int i=1;i<=T;++i) {
		clear();
		slove(i);
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 10ms
memory: 8612kb

input:

100
2 1 1 2
1 2
3 3 1 2
1 3
1 2
2 3
6 6 5 1
1 4
5 6
3 4
3 6
2 3
1 2
6 6 2 4
4 5
1 4
2 3
2 5
1 6
5 6
6 6 2 3
1 3
3 4
2 6
2 5
4 5
1 5
6 5 5 3
2 5
3 4
1 2
3 6
4 6
6 5 1 6
1 4
1 2
5 6
3 5
2 4
30 29 11 5
9 21
25 28
14 20
13 30
21 28
5 18
5 23
8 22
10 30
4 8
7 24
16 26
13 26
12 18
22 23
11 16
3 11
2 17
1 ...

output:

00
1 0 
1 0 
Case #1: 2
111
1 0 1 
1 0 1 
Case #2: SAFE
111100
0 1 2 1 4 3 
0 1 2 1 4 3 
Case #3: 8
100111
1 2 3 0 1 2 
1 2 3 0 1 2 
Case #4: 6
101110
1 3 0 1 2 4 
1 3 0 1 2 4 
Case #5: SAFE
001101
1061109567 1061109567 0 1 1061109567 1 
1061109567 1061109567 0 1 1061109567 1 
Case #6: SAFE
000000
1...

result:

wrong answer 1st lines differ - expected: 'Case #1: 2', found: '00'

Test #2:

score: 0
Wrong Answer
time: 1912ms
memory: 16368kb

input:

100
100000 99999 32832 52005
67463 96972
10280 86580
12146 44520
41541 86634
46936 64223
22701 46291
9093 80967
52512 77386
51062 58931
2092 55026
2096 2384
85102 92986
39914 66949
33370 68952
41576 58836
27668 33997
5843 30705
44415 57721
15188 28706
23340 55082
20335 90872
16029 80328
4656 74633
8...

output:

111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

result:

wrong answer 1st lines differ - expected: 'Case #1: SAFE', found: '111111111111111111111111111111...1111111111111111111111111111111'