hdoj 1272
題目鏈接http://acm.hdu.edu.cn/showproblem.php?pid=1272
并查集
?1?#include?<iostream>?2?#include?<algorithm>
?3?
?4?using?namespace?std;
?5?
?6?int?f[100001];
?7?bool?dis[100001];
?8?
?9?int?Find(int?x)
10?{
11?????while(?x?!=?f[x]?){
12?????????x?=?f[x];
13?????}
14?????
15?????return?x;
16?}
17?
18?int?Union(int?x,?int?y)
19?{
20?????if(?x?==?y?){
21?????????return?0;
22?????}
23?????if(?x?<?y?){
24?????????f[x]?=?y;
25?????}
26?????else{
27?????????f[y]?=?x;
28?????}
29?????return?1;
30?}
31?
32?int?main()
33?{
34?????int?s,?e,?flag;
35?????int?sn,?en,?temp;
36?????
37?????for(int?i=0;?i<100001;?i++){
38?????????f[i]?=?i;
39?????????dis[i]?=?false;
40?????}
41?????flag?=?true;?sn?=?100001;?en?=?0;
42?????while(?scanf("%d%d",?&s,?&e),?(?s?!=?-1?||?e?!=?-?1?)?){
43?????????if(?s?+?e?==?0?){
44?????????????if(?flag?){
45?????????????????temp?=?Find(sn);
46?????????????????for(int?i=sn+1;?i<=en;?i++){
47?????????????????????if(dis[i]?&&?temp?!=?Find(i)){
48?????????????????????????flag?=?false;
49?????????????????????????break;
50?????????????????????}
51?????????????????}
52?????????????}
53?????????????printf("%s\n",?flag???"Yes"?:?"No");
54?????????????for(int?i=sn;?i<=en;?i++){
55?????????????????f[i]?=?i;
56?????????????????dis[i]?=?false;
57?????????????}
58?????????????sn?=?100001;?en?=?0;
59?????????????flag?=?true;
60?????????????continue;
61?????????}
62?????????dis[e]?=?dis[s]?=?true;
63?????????sn?=?min(sn,?s);
64?????????sn?=?min(sn,?e);
65?????????en?=?max(en,?s);
66?????????en?=?max(en,?e);
67?????????if(?flag?){
68?????????????flag?=?Union(Find(s),?Find(e));
69?????????}
70?????}
71?????
72?????return?0;
73?} 幾個初始化變量寫錯了,搞的我w了好幾次!
?
?
轉載于:https://www.cnblogs.com/accepted/articles/1807541.html
總結
- 上一篇: HDOJ 1875 HDU 1875 畅
- 下一篇: 孝顺孝顺,孝不如顺