Submission #101856


Source Code Expand

#include <cstdio>

int rt(int uf[100000],int a)
{
	return uf[a]<0?a:uf[a]=rt(uf,uf[a]);
}

void con(int uf[100000],int a,int b)
{
	a=rt(uf,a);
	b=rt(uf,b);
	if(a!=b){
	if(-uf[a]<-uf[b]){
		uf[a]=b;
	}
	else if(-uf[a]>-uf[b]){
		uf[b]=a;
	}
	else{
		uf[a]=b;
		uf[b]--;
	}
	}
}

bool ask(int uf[100000],int a,int b)
{
	a=rt(uf,a);
	b=rt(uf,b);
	//printf("%d %d\n",a,b);
	return a==b;
}


int main()
{
	int n,m,k;
	scanf("%d%d%d",&n,&m,&k);
	static int a[100000],b[100000];
	static bool B[100000]={0};
	for(int i=0;i<m;i++){
		scanf("%d %d",a+i,b+i);
		a[i]--;
		b[i]--;
	}
	static int v[100000],e[100000],w[100000];
	for(int i=0;i<k;i++){
		scanf("%d",v+i);
		if(v[i]==0){
			scanf("%d",e+i);
			e[i]--;
			B[e[i]]=1;
		}
		else{
			scanf("%d%d",e+i,w+i);
			e[i]--;
			w[i]--;
		}
	}
	static int uf[100000];
	for(int i=0;i<n;i++){
		uf[i]=-1;
	}
	for(int i=0;i<m;i++){
		if(!B[i]){
			con(uf,a[i],b[i]);
		}
	}
	//return 0;
	static bool K[100000];
	int p=0;
	for(int i=k-1;i>=0;i--){
		//printf("%d\n",v[i]);
		if(v[i]==0){
			int E=e[i],A=a[E],B=b[E];
			//printf("%d %d\n",A,B);
			con(uf,A,B);
		}
		else{
			int V=e[i],W=w[i];
			//printf("%d %d\n",V,W);
			K[p]=ask(uf,V,W);
			p++;
		}
	}
	for(int i=p-1;i>=0;i--){
		printf("%s\n",K[i]?"YES":"NO");
	}
	return 0;
}

Submission Info

Submission Time
Task D - Graph Destruction
User phidnight
Language C++ (GCC 4.4.7)
Score 100
Code Size 1361 Byte
Status AC
Exec Time 114 ms
Memory 3492 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:38: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
./Main.cpp:42: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
./Main.cpp:48: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
./Main.cpp:50: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
./Main.cpp:55: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 37
Set Name Test Cases
All 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 35, 36, 4, 5, 50, 6, 7, 8, 9
Case Name Status Exec Time Memory
1 AC 21 ms 932 KB
10 AC 20 ms 928 KB
11 AC 28 ms 928 KB
12 AC 42 ms 1440 KB
13 AC 63 ms 2076 KB
14 AC 83 ms 2524 KB
15 AC 99 ms 2992 KB
16 AC 114 ms 3492 KB
17 AC 45 ms 1572 KB
18 AC 43 ms 1636 KB
19 AC 52 ms 1692 KB
2 AC 20 ms 796 KB
20 AC 68 ms 2028 KB
21 AC 52 ms 1700 KB
22 AC 65 ms 2084 KB
23 AC 55 ms 1632 KB
24 AC 41 ms 1380 KB
25 AC 44 ms 1452 KB
26 AC 88 ms 2784 KB
27 AC 39 ms 1312 KB
28 AC 41 ms 1440 KB
29 AC 72 ms 2208 KB
3 AC 20 ms 924 KB
30 AC 57 ms 1832 KB
31 AC 83 ms 2596 KB
32 AC 70 ms 2216 KB
33 AC 76 ms 2344 KB
34 AC 91 ms 2724 KB
35 AC 80 ms 2536 KB
36 AC 48 ms 1504 KB
4 AC 21 ms 928 KB
5 AC 20 ms 800 KB
50 AC 85 ms 2656 KB
6 AC 21 ms 804 KB
7 AC 20 ms 932 KB
8 AC 22 ms 808 KB
9 AC 23 ms 936 KB