青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

M.J的blog

algorithm,ACM-ICPC
隨筆 - 39, 文章 - 11, 評論 - 20, 引用 - 0
數(shù)據(jù)加載中……

TOJ 3499. Network(并查集)

今天簡單看了下并查集,關(guān)于優(yōu)化什么的還沒有看。做了兩個簡單的題,先熟悉一下~
并查集用來表示若干互不相交的集合,是一種樹狀的結(jié)構(gòu)。
并查集有三個操作:初始化,合并,查詢。
其中在合并的時候,由于可能集合是一個偏的很厲害的樹,如果不加分類直接合并的話,每次查詢會相當(dāng)浪費時間,所以
需要每次合并的時候?qū)⒁?guī)模小的集合并到規(guī)模大的集合,并且隨時更新集合內(nèi)元素的個數(shù)。
簡單的不優(yōu)化的Union函數(shù)如下:
1 Union(int root1,int root2)
2 {
3      int t1,t2;
4      t1=find(root1);
5      t2=find(root2);
6      if(t1!=t2)
7          t1.father=t2;
8      return ;
9 }
優(yōu)化后的Union函數(shù)如下:

 1 void Union(int root1,int root2)
 2 {
 3     int t1,t2;
 4     t1=find(root1);
 5     t2=find(root2);
 6     if(t1==t2) return ;                      //只有當(dāng)兩個根節(jié)點的祖先不同才合并
 7     if(t1!=t2){                              
 8         if(a[t1].v<a[t2].v){                 //將規(guī)模小的集合并到規(guī)模大的集合,同時集合元素個數(shù)增加
 9             a[t1].father=t2;
10             a[t2].v+=a[t1].v;
11         }
12         else{
13             a[t2].father=t1;
14                 a[t1].v+=a[t2].v;
15         }
16         
17     }
18 }

先看一下最簡單的并查集的模板:

 1 #include<stdio.h>
 2 #define MAX 10002
 3 int m,n;
 4 struct type
 5 {
 6     int father,v; //father 表示根節(jié)點,v表示集合內(nèi)元素個數(shù)
 7 }a[MAX];
 8 void initial(int n)
 9 {
10     int i;
11     for(i=0;i<n;i++){
12         a[i].father=i; //初始化將集合節(jié)點標(biāo)記為自己,元素個數(shù)為1
13         a[i].v=1;
14     }
15 }
16 int find(int n)
17 {    
18     if(a[n].father!=n)
19         return find(a[n].father); //此處也可以寫為 while(a[n].father!=n) n=a[n].father;
20     return n;
21 }
22 void Union(int root1,int root2)
23 {
24     int t1,t2;
25     t1=find(root1);
26     t2=find(root2);
27     if(t1==t2) return ; //只有當(dāng)兩個根節(jié)點的祖先不同才合并
28     if(t1!=t2){
29         if(a[t1].v<a[t2].v){ //將規(guī)模小的集合并到規(guī)模大的集合,同時集合元素個數(shù)增加
30             a[t1].father=t2;
31             a[t2].v+=a[t1].v;
32         }
33         else{
34             a[t2].father=t1;
35             a[t1].v+=a[t2].v;
36         }
37     }
38 }
39 int main()
40 {}
運用上邊的模板,就可以將TOJ 3499 AC掉了
題意大概是N個數(shù),從0到N-1,有M個關(guān)系,最后問P和Q之間是否是關(guān)系。
Code:
 1 #include<stdio.h>
 2 #define MAX 10002
 3 int m,n;
 4 struct type
 5 {
 6     int father,v;
 7 }a[MAX];
 8 void initial(int n)
 9 {
10     int i;
11     for(i=0;i<n;i++){
12         a[i].father=i;
13         a[i].v=1;
14     }
15 }
16 int find(int n)
17 {
18     if(a[n].father!=n)
19         return find(a[n].father);
20     return n;
21 }
22 void Union(int root1,int root2)
23 {
24     int t1,t2;
25     t1=find(root1);
26     t2=find(root2);
27     if(t1==t2) return ;
28     if(t1!=t2){
29         if(a[t1].v<a[t2].v){
30             a[t1].father=t2;
31             a[t2].v+=a[t1].v;
32         }
33         else{
34             a[t2].father=t1;
35             a[t1].v+=a[t2].v;
36         }
37     }
38 }
39 int main()
40 {
41     int cas,i,j,k,p,q,N,M;
42     while(scanf("%d%d%d",&N,&M,&k)!=EOF){
43         initial(N);
44         for(i=0;i<M;i++){
45             scanf("%d%d",&p,&q);
46             Union(p,q);
47         }
48         for(i=1;i<=k;i++){
49             scanf("%d%d",&p,&q);
50             if(find(p)==find(q))
51                 printf("YES\n");
52         else printf("NO\n");
53     }
54     }
55 }

posted on 2010-04-24 14:55 M.J 閱讀(196) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品乱码一区二区三区| 欧美精品乱码久久久久久按摩| 亚洲清纯自拍| 欧美日韩ab片| 午夜精品久久久久久久99热浪潮| 久久免费视频这里只有精品| 在线欧美电影| 激情综合色综合久久| 国产精品v日韩精品| 欧美日产一区二区三区在线观看 | 一区在线免费观看| 欧美成人免费网站| 久久亚洲私人国产精品va| 午夜精品影院| 欧美一区视频在线| 欧美一级成年大片在线观看| 亚洲影院免费观看| 欧美一级电影久久| 欧美在线观看视频在线| 亚洲精选大片| 亚洲人成毛片在线播放女女| 亚洲第一视频| 亚洲日产国产精品| 欧美午夜免费电影| 国产精品网站在线观看| 欧美日本在线看| 欧美日韩精品在线观看| 国产精品久久久久久亚洲毛片| 欧美精品久久久久久| 欧美电影在线播放| 欧美黄色网络| 国产精品美女久久| 国产欧美日韩精品丝袜高跟鞋 | 亚洲深夜福利视频| 亚洲午夜伦理| 久久精品国产一区二区三| 久久综合五月| 99国产精品私拍| 欧美一区日本一区韩国一区| 午夜在线成人av| 亚洲素人一区二区| 免费看的黄色欧美网站| 欧美国产日韩a欧美在线观看| 欧美另类极品videosbest最新版本| 欧美日韩国产成人精品| 国产亚洲成人一区| 亚洲国产精品热久久| 性久久久久久久久| 亚洲日本无吗高清不卡| 欧美主播一区二区三区| 欧美美女bb生活片| 亚洲国产成人一区| 久久伊伊香蕉| 一区二区三区日韩欧美| 欧美成人精品1314www| 韩国成人精品a∨在线观看| 午夜精品久久| 一区二区三区四区五区视频 | 男女激情视频一区| 午夜精品久久久久久久久久久久 | 国产精品视频久久久| 亚洲人体偷拍| 亚洲日本中文字幕| 欧美精品18+| 一级成人国产| 亚洲视频在线观看视频| 国产精品久久久免费| 老司机一区二区| 一本色道久久综合亚洲精品不卡| 久久精品国产综合精品| 久久久久久网| 欧美一乱一性一交一视频| 国内成人在线| aa日韩免费精品视频一| 亚洲桃花岛网站| 国产喷白浆一区二区三区| 欧美影院视频| 麻豆精品国产91久久久久久| 在线综合亚洲| 欧美在线视频在线播放完整版免费观看 | 99av国产精品欲麻豆| 黄色影院成人| 久久成人精品无人区| 亚洲美女在线国产| 久久人人爽国产| 久久国产婷婷国产香蕉| 欧美午夜在线一二页| 99re热精品| 国产精品99久久99久久久二8 | 久色成人在线| 国产婷婷精品| 久久久精品性| 欧美国产高潮xxxx1819| 亚洲精品在线观看免费| 欧美另类女人| 午夜影院日韩| 亚洲成人在线网| 一本色道综合亚洲| 国产伦精品一区二区三区免费迷| 午夜精品福利电影| 久久久久久黄| 欧美护士18xxxxhd| 亚洲夜间福利| 黄色一区二区在线| 欧美日韩国产成人在线| 9l国产精品久久久久麻豆| 欧美一区二区三区精品| 亚洲国产欧美精品| 国产亚洲一区在线播放| 欧美精品日韩| 久久一区精品| 亚洲欧美三级伦理| 日韩特黄影片| 亚洲人线精品午夜| 免费人成网站在线观看欧美高清| 亚洲午夜在线观看| 亚洲精品欧美极品| 激情婷婷久久| 国语精品一区| 国内视频精品| 国产综合久久久久久鬼色| 国产精品午夜春色av| 欧美精品在线免费播放| 欧美高清影院| 欧美精品国产精品日韩精品| 久久久精品免费视频| 欧美资源在线观看| 午夜欧美大片免费观看| 亚洲一区二区三区欧美| av不卡在线看| 亚洲一区二区三区影院| 在线一区欧美| 亚洲欧美日韩国产成人| 亚洲男人的天堂在线aⅴ视频| 亚洲无人区一区| 亚洲欧美色婷婷| 欧美一二三区精品| 久久国产加勒比精品无码| 久久久在线视频| 免费毛片一区二区三区久久久| 久久久五月天| 免费美女久久99| 国产精品九九| 伊人久久男人天堂| 99精品免费视频| 性做久久久久久| 亚洲第一福利在线观看| 亚洲永久精品国产| 久久久久久久久久码影片| 国产精品yjizz| 亚洲国产日本| 久久久久久伊人| 中文亚洲免费| 欧美日本不卡| 日韩午夜精品视频| 欧美777四色影视在线| 欧美一区二区三区在线视频| 欧美日韩三级| 伊人久久综合| 久久久91精品国产一区二区三区 | 久久精品女人| 欧美日韩成人在线| 亚洲欧洲另类国产综合| 免费亚洲视频| 久久久久久高潮国产精品视| 国产专区一区| 宅男精品视频| 亚洲电影免费观看高清完整版在线| 久久aⅴ乱码一区二区三区| 国产在线成人| 欧美福利电影网| 欧美激情久久久久久| 日韩一级不卡| 亚洲欧美日韩综合| 黄色av成人| 亚洲精品国产视频| 国产精品一区二区女厕厕| 久久狠狠婷婷| 欧美国产精品v| 午夜精品视频| 免费日本视频一区| 国产精品国产三级欧美二区| 亚洲国产精品va在看黑人| 亚洲成色最大综合在线| 欧美日韩八区| 久久av一区二区三区| 久久久99爱| 亚洲专区欧美专区| 欧美一区二区视频在线| 亚洲精品一区二区三区蜜桃久| 一区二区三区高清视频在线观看 | 久久在线播放| 国产精品国产三级国产普通话蜜臀| 久久天堂av综合合色| 国产精品香蕉在线观看| 亚洲欧美国产另类| 久久久久国产精品厨房| 国产情人节一区| 久久亚洲精品中文字幕冲田杏梨 | 99精品视频一区|