Submission #101844
Source Code Expand
import static java.lang.System.in; import static java.lang.System.out; import java.io.*; import java.util.*; public class Main { static final double EPS = 1e-10; static final double INF = 1 << 31; static final double PI = Math.PI; public static Scanner sc = new Scanner(in); StringBuilder sb = new StringBuilder(); BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); static final String br = System.getProperty("line.separator"); public static class UnionFind{ public int[] par,rank; public int size; public UnionFind(int n){ par=new int[n]; for(int i=0;i<n;i++)par[i]=i; rank=new int[n]; size=n; } public int find(int x){ if(par[x]==x)return x; return par[x]=find(par[x]); } public boolean same(int x,int y){ return find(x)==find(y); } public void unite(int x,int y){ x=find(x);y=find(y); if(x==y)return; if(rank[x]<rank[y])par[x]=y; else par[y]=x; if(rank[x]==rank[y]) rank[x]++; size--; } } class Edge{ int f,t; Edge(int _f,int _t){ f=_f;t=_t; } } class Task{ int k; int e; int v; int w; Task(int _k,int _e){ k=_k;e=_e; } Task(int _k,int _v,int _w){ k=_k;v=_v;w=_w; } } public void run() throws IOException { int N=sc.nextInt(),M=sc.nextInt(),K=sc.nextInt(); Edge[] es=new Edge[M]; for(int i=0;i<M;i++){ es[i]=new Edge(sc.nextInt()-1,sc.nextInt()-1); } Task[] tasks=new Task[K]; for(int i=0;i<K;i++){ int k=sc.nextInt(); if(k==0){ tasks[i]=new Task(k,sc.nextInt()-1); }else{ tasks[i]=new Task(k,sc.nextInt()-1,sc.nextInt()-1); } } boolean[] ex=new boolean[M]; Arrays.fill(ex,true); for(int i=0;i<K;i++){ if(tasks[i].k==0){ ex[tasks[i].e]=false; } } UnionFind uf=new UnionFind(N); for(int i=0;i<M;i++){ if(ex[i]){ uf.unite(es[i].f,es[i].t); } } List<String> res=new ArrayList<String>(); for(int i=K-1;i>=0;i--){ if(tasks[i].k==0){ int ei=tasks[i].e; uf.unite(es[ei].f,es[ei].t); }else{ if(uf.same(tasks[i].v, tasks[i].w)){ res.add("YES"); }else{ res.add("NO"); } } } for(int i=res.size()-1;i>=0;i--){ sb.append(res.get(i)+br); } pr(sb); } public static void main(String[] args) throws IOException { new Main().run(); } public static void pr(Object obj) { out.print(obj); } public static void ln(Object obj) { out.println(obj); } }
Submission Info
Submission Time | |
---|---|
Task | D - Graph Destruction |
User | AND10 |
Language | Java (OpenJDK 1.7.0) |
Score | 100 |
Code Size | 2580 Byte |
Status | AC |
Exec Time | 1493 ms |
Memory | 45680 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
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 | 476 ms | 23220 KB |
10 | AC | 639 ms | 30512 KB |
11 | AC | 799 ms | 37728 KB |
12 | AC | 917 ms | 37768 KB |
13 | AC | 1106 ms | 41604 KB |
14 | AC | 1205 ms | 42552 KB |
15 | AC | 1333 ms | 44080 KB |
16 | AC | 1493 ms | 45680 KB |
17 | AC | 950 ms | 39068 KB |
18 | AC | 932 ms | 38952 KB |
19 | AC | 1013 ms | 39620 KB |
2 | AC | 493 ms | 23224 KB |
20 | AC | 1161 ms | 41120 KB |
21 | AC | 994 ms | 39892 KB |
22 | AC | 1086 ms | 41240 KB |
23 | AC | 1022 ms | 39596 KB |
24 | AC | 901 ms | 37568 KB |
25 | AC | 998 ms | 39016 KB |
26 | AC | 1333 ms | 43408 KB |
27 | AC | 941 ms | 37476 KB |
28 | AC | 936 ms | 37828 KB |
29 | AC | 1182 ms | 41728 KB |
3 | AC | 517 ms | 23348 KB |
30 | AC | 1124 ms | 40144 KB |
31 | AC | 1270 ms | 43384 KB |
32 | AC | 1153 ms | 41764 KB |
33 | AC | 1238 ms | 41632 KB |
34 | AC | 1330 ms | 43892 KB |
35 | AC | 1275 ms | 42440 KB |
36 | AC | 966 ms | 39404 KB |
4 | AC | 465 ms | 23860 KB |
5 | AC | 451 ms | 23988 KB |
50 | AC | 1235 ms | 42756 KB |
6 | AC | 478 ms | 24496 KB |
7 | AC | 516 ms | 25012 KB |
8 | AC | 543 ms | 25964 KB |
9 | AC | 620 ms | 27864 KB |