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

pku 1182

 2009年7月12日 星期日

題目鏈接:PKU 1182 食物鏈
 
分類:并查集的拓展(經典)


題目分析與算法模型

        本題是一道經典的并查集的拓展,其中比較一般的解法是設立三個group,因為一共有三種動物。但其實有一種更加簡便的方法,具體如下,利用向量的思考模式將三個group合并成一個并查集,同時對每個節點保持其到根結點的相對類別偏移量,定義為:
0——同類;
1——食物;
2——天敵;
對于樹中的每一個節點(動物),記錄其與根節點的相對偏移量,即上面的0,1和2,這樣就可以根據相對平移量計算出其和根節點所代表的動物的關系,合并節點時,注意兩棵樹的根節點之間的相對偏移量,這里有幾個公式需要自己推導,都在代碼中了;

Code:

 1
#include<stdio.h>
 2#define max 50005
 3
 4int n,k,i,j,parent[max],kind[max],count,a,b,d;
 5
 6void init(int n)
 7{
 8    for(j=1;j<=n;j++)
 9    {
10        parent[j]=-1;
11        kind[j]=0;
12    }

13}

14int find(int x)
15{
16    int t=parent[x];
17    if(t<0)return x;
18    parent[x]=find(t);
19    kind[x]=(kind[x]+kind[t])%3;
20    return parent[x];
21}

22void Union(int x,int y,int d)
23{
24    if(x>n||y>n)count++;
25    else if(d==1)
26    {
27        int root1=find(x),root2=find(y);
28        if(root1==root2)
29        {
30            if(kind[x]!=kind[y])count++;
31        }

32        else
33        {
34            if(parent[root1]<parent[root2])   //root1為根
35            {
36                parent[root1]+=parent[root2];
37                parent[root2]=root1;
38                kind[root2]=(kind[x]-kind[y]+3)%3;       //需要自己推導
39            }

40            else                              //root2為根
41            {
42                parent[root2]+=parent[root1];
43                parent[root1]=root2;
44                kind[root1]=(kind[y]-kind[x]+3)%3;
45            }

46        }

47    }

48    else   //d=2
49    {
50        if(x==y)count++;
51        else
52        {
53            int root1=find(x),root2=find(y);
54            if(root1==root2)
55            {
56                if(kind[x]!=(kind[y]+1)%3)count++//需要自己推導
57            }

58            else
59            {
60                if(parent[root1]<parent[root2])   //root1為根
61                {
62                    parent[root1]+=parent[root2];
63                    parent[root2]=root1;
64                    kind[root2]=(kind[x]-kind[y]+5)%3;       //需要自己推導
65                }

66                else                              //root2為根
67                
68                    parent[root2]+=parent[root1];
69                    parent[root1]=root2;
70                    kind[root1]=(kind[y]-kind[x]+4)%3;      //需要自己推導
71                }

72            }

73        }

74    }

75}

76int main()
77{
78    scanf("%d%d",&n,&k);
79    init(n);
80    count=0;
81    for(i=0;i<k;i++)
82    {
83        scanf("%d%d%d",&d,&a,&b);
84        Union(a,b,d);
85    }

86    printf("%d\n",count);
87    return 0;
88}

89

posted on 2009-07-13 00:08 蝸牛也Coding 閱讀(1217) 評論(3)  編輯 收藏 引用

評論

# re: pku 1182[未登錄] 2009-12-17 12:12 YY

YTE   回復  更多評論   

# re: pku 1182 2010-02-12 16:04 Y

大家注意了,那個1代表根是這個節點的食物,別誤解了  回復  更多評論   

# re: pku 1182[未登錄] 2010-03-26 19:15 菜鳥

可以簡單說一下這幾條語句什么意思么?
kind[x]=(kind[x]+kind[t])%3;
kind[root2]=(kind[x]-kind[y]+3)%3;
kind[root2]=(kind[x]-kind[y]+5)%3;
  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

導航

統計

常用鏈接

留言簿(8)

隨筆檔案(78)

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产亚洲精品福利| 久久蜜臀精品av| 欧美成人四级电影| 久久久久久久久久久一区| 国产综合色在线视频区| 久久蜜桃精品| 欧美国产91| 亚洲综合99| 欧美一级免费视频| 国产精品久久久久久久久久免费 | 免费成人av资源网| 国产婷婷一区二区| 欧美成人午夜激情| 国产精品v欧美精品v日韩精品| 欧美一区二区高清在线观看| 噜噜噜躁狠狠躁狠狠精品视频 | 亚洲伦理中文字幕| 亚洲手机成人高清视频| 国内精品久久久久影院薰衣草| 亚洲国产黄色| 国产精品久久久久久超碰| 久久亚洲春色中文字幕| 久久久999精品免费| 狠久久av成人天堂| 亚洲精品偷拍| 韩国福利一区| aaa亚洲精品一二三区| 伊人婷婷久久| 亚洲摸下面视频| 99精品国产一区二区青青牛奶| 亚洲一区日韩在线| 亚洲黄色视屏| 亚洲欧美一区二区原创| 夜夜爽99久久国产综合精品女不卡| 性欧美大战久久久久久久久| 亚洲毛片在线| 久久高清免费观看| 精品91免费| 9久re热视频在线精品| 欧美日韩伊人| 欧美第一黄网免费网站| 国产精品一区二区三区成人| 亚洲精品美女久久7777777| 激情综合亚洲| 午夜欧美精品久久久久久久| 一区二区三区 在线观看视| 久久色在线观看| 午夜宅男欧美| 国产精品久久久999| 久久躁日日躁aaaaxxxx| 欧美日韩大陆在线| 99视频有精品| 蜜臀久久久99精品久久久久久| 先锋影音久久| 欧美图区在线视频| 欧美激情中文字幕乱码免费| 国产九九精品视频| 欧美mv日韩mv国产网站| 国产精品亚洲激情| 日韩午夜在线| 99精品视频免费全部在线| 亚洲第一色在线| 一区视频在线看| 久久激情五月婷婷| 久久久亚洲午夜电影| 国产偷自视频区视频一区二区| 一区二区三区视频免费在线观看| 亚洲精品视频在线观看免费| 欧美国产欧美综合| 亚洲国产高清高潮精品美女| 亚洲精品日产精品乱码不卡| 欧美福利影院| 亚洲免费黄色| 亚洲欧美中文日韩在线| 国产精品美女视频网站| 亚洲综合日韩在线| aa级大片欧美三级| 久久免费视频在线观看| 免费影视亚洲| 91久久在线视频| 欧美理论电影在线观看| 日韩一级成人av| 性欧美video另类hd性玩具| 国产伪娘ts一区| 久久噜噜噜精品国产亚洲综合| 欧美jizz19hd性欧美| 亚洲精品孕妇| 国产精品国产成人国产三级| 一本久道久久久| 亚洲欧美日本在线| 1000部精品久久久久久久久 | 欧美1区2区视频| 一二三四社区欧美黄| 国产色综合久久| 欧美精品aa| 欧美一区亚洲| 99精品视频免费观看视频| 久久久久久久久久久久久久一区 | 亚洲影院在线| 亚洲欧洲日本国产| 久久这里有精品视频| 亚洲欧美国产精品专区久久| 亚洲激情在线播放| 国产视频一区在线观看一区免费| 欧美日韩国产首页| 免费亚洲电影| 99在线观看免费视频精品观看| 欧美成人激情视频| 久久国产精品色婷婷| 一区二区三区视频在线看| 精品91在线| 国产午夜精品福利| 国产精品v欧美精品v日韩精品| 另类综合日韩欧美亚洲| 性久久久久久| 亚洲一区二区三区欧美| 国产午夜精品理论片a级大结局| 一区二区激情| 亚洲高清在线视频| 国产自产在线视频一区| 男人的天堂亚洲| 久久久九九九九| 午夜一区二区三区不卡视频| 亚洲手机在线| 一区二区三区免费在线观看| 亚洲日本一区二区| 一区二区三区在线看| 国产自产在线视频一区| 国产在线国偷精品产拍免费yy| 国产精品视频一区二区三区| 久久这里只有| 性色av一区二区三区红粉影视| 亚洲区一区二区三区| 老巨人导航500精品| 久久成人一区二区| 亚洲视频图片小说| 在线一区二区三区四区五区| 一区二区高清在线| 亚洲国产视频一区| 亚洲国产婷婷| 亚洲精品自在久久| 99视频精品免费观看| aa国产精品| 午夜精品久久一牛影视| 欧美一区永久视频免费观看| 性久久久久久久久| 久久国产黑丝| 免播放器亚洲一区| 亚洲国产另类精品专区| 亚洲精品久久久久久久久久久久久| 亚洲精品免费在线播放| a91a精品视频在线观看| 亚洲一级特黄| 欧美在线一级视频| 欧美大成色www永久网站婷| 欧美日本精品| 午夜免费久久久久| 亚洲欧美日本精品| 午夜精品久久久久影视| 久久久久久综合网天天| 鲁大师影院一区二区三区| 亚洲韩国青草视频| 日韩视频第一页| 亚洲无亚洲人成网站77777| 亚洲一区二区精品| 新67194成人永久网站| 久久久久久欧美| 蜜桃av一区二区在线观看| 欧美日韩免费一区二区三区视频 | 亚洲天堂视频在线观看| 欧美一区二区三区在线观看视频| 久久精品欧美日韩| 亚洲国产精品电影| 一区二区三区四区五区精品| 亚洲欧美日韩精品久久亚洲区| 久久一区欧美| 欧美日本乱大交xxxxx| 国产三级欧美三级日产三级99| 亚洲国产天堂网精品网站| 日韩视频一区二区在线观看| 亚洲图片欧洲图片av| 久久久视频精品| 亚洲免费大片| 欧美中文字幕| 欧美三区在线| 黄色成人免费观看| 99天天综合性| 久久精品一区二区| 亚洲欧洲综合另类| 亚洲自拍偷拍麻豆| 欧美成人综合网站| 狠狠爱综合网| 亚洲小说区图片区| 久久久噜噜噜久久| 亚洲第一精品夜夜躁人人爽| 欧美国产精品久久| 久久久精彩视频| 欧美日韩亚洲高清| 亚洲第一天堂av| 久久久噜噜噜久久中文字免|