vijos1034 家族(并查集模版)
2017-02-22 16:52
197 查看
家族
Time Limit:10000MS Memory Limit:65536K
Total Submit:168 Accepted:87
Case Time Limit:1000MS
Description
若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。
规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。
Input
第一行:三个整数n,m,p,(n<=50000,m<=50000,p<=50000),分别表示有n个人,m个亲戚关系,询问p对亲戚关系。以下m行:每行两个数Mi,Mj,1<=Mi,Mj<=N,表示Ai和Bi具有亲戚关系。接下来p行:每行两个数Pi,Pj,询问Pi和Pj是否具有亲戚关系。
Output
P行,每行一个’Yes’或’No’。表示第i个询问的答案为“具有”或“不具有”亲戚关系。
分析:
本题的本质: 是否在图的同一个连通块,因为图太庞大, 每次还需要遍历,因此采用并差集。
代码
Time Limit:10000MS Memory Limit:65536K
Total Submit:168 Accepted:87
Case Time Limit:1000MS
Description
若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。
规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。
Input
第一行:三个整数n,m,p,(n<=50000,m<=50000,p<=50000),分别表示有n个人,m个亲戚关系,询问p对亲戚关系。以下m行:每行两个数Mi,Mj,1<=Mi,Mj<=N,表示Ai和Bi具有亲戚关系。接下来p行:每行两个数Pi,Pj,询问Pi和Pj是否具有亲戚关系。
Output
P行,每行一个’Yes’或’No’。表示第i个询问的答案为“具有”或“不具有”亲戚关系。
分析:
本题的本质: 是否在图的同一个连通块,因为图太庞大, 每次还需要遍历,因此采用并差集。
代码
const maxn=50000; var p,r:array[0..maxn] of longint; n,m,k,x,y,i:longint; function find(x:longint):longint; var y,root,z:longint; begin y:=x; while p[y]<>0 do y:=p[y]; root:=y; y:=x; while p[y]<>0 do begin z:=p[y]; p[y]:=root; y:=z; end; exit(root); end; procedure union(x,y:longint); var u,v:longint; begin u:=find(x); v:=find(y); if r[u]<=r[v] then begin p[u]:=v; if r[u]=r[v] then r[v]:=r[v]+1; end else p[v]:=u; end; procedure init; var i,x,y:longint; begin readln(n,m,k); for i:=1 to m do begin readln(x,y); if find(x)<>find(y) then union(x,y); end; end; begin init; for i:=1 to k do begin readln(x,y); if find(x)=find(y) then writeln('Yes') else writeln('No'); end; end.
相关文章推荐
- vijos 1034家族 并查集
- vijos1034 家族 (并查集处理集合)
- Vijos 1034 家族 ( 并查集 )
- 【Vijos 1034】家族(并查集)
- Vijos1034. 家族
- Vijos 1034题:家族
- vijos-1034-家族
- Vijos P1034家族 并查集基础
- Vijos P1034家族【基础并查集】
- 并查集——以vijos《家族》为例
- caioj1092: 并查集(模版 家族)
- 【vijos P1034】家族(并查集)
- Vijos 1034 家族
- 1092: 并查集(模版 家族)
- Vijos 1034 家族
- vijos 1034 家族
- 家族(并查集)
- P1034 家族 (并查集 I)
- 【并查集】【Rqnoj331】家族
- CodeVS 1073家族(并查集)