• <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>
            我叫張小黑
            張小黑的掙扎生活
            posts - 66,  comments - 109,  trackbacks - 0
            在我還有一口氣的時(shí)候他終于過了........
             1#include<iostream>
             2#define MaxN 50000
             3typedef struct {
             4    int parent;
             5    int rank;
             6    int food;//指向食物類
             7    int enemy;//指向天敵類
             8}NODE;
             9NODE animal[MaxN+1];
            10void init(int n)
            11{
            12    int i;
            13    for(i=1;i<=n;i++){
            14        animal[i].parent=i;
            15        animal[i].rank=0;
            16        animal[i].food=-1;
            17        animal[i].enemy=-1;
            18    }
            19}
            20int find_set(int x)
            21{
            22    if(x==-1)return -1;//有些food,enemy指向-1
            23    if(animal[x].parent!=x)
            24        animal[x].parent=find_set(animal[x].parent);
            25    return animal[x].parent;
            26}
            27int union_set(int x,int y)
            28{
            29    if(x==-1)return y;
            30    if(y==-1)return x;
            31    if(animal[x].rank>animal[y].rank){
            32        animal[y].parent=x;
            33        return x;}
            34    else {
            35        animal[x].parent=y;
            36        if(animal[x].rank==animal[y].rank)animal[y].rank++;
            37        return y;}
            38}
            39void make(int x,int y,int fx,int fy,int ex,int ey)//創(chuàng)建x吃y的關(guān)系
            40{
            41    int t,v,w;
            42    t=union_set(fx,y);//首先將y與x的food合并
            43    v=union_set(x,ey);
            44    w=union_set(ex,fy);
            45    animal[v].enemy=w;
            46    animal[v].food=t;
            47    animal[t].enemy=v;
            48    animal[t].food=w;
            49    if(w!=-1){
            50        animal[w].food=v;
            51        animal[w].enemy=t;}
            52}
            53int main()
            54{
            55    int N,K,i,wn=0,x,y,fx,fy,ex,ey,oper;
            56    int t,u,v;
            57    scanf("%d%d",&N,&K);
            58    init(N);
            59    for(i=1;i<=K;i++){
            60        scanf("%d%d%d",&oper,&x,&y);//oper為1的時(shí)候表示x和y是同類,oper為2的時(shí)候表示x吃y
            61        if(x>N||y>N){wn++;continue;}
            62        x=find_set(x);
            63        y=find_set(y);
            64        fx=find_set(animal[x].food);//fx可能是-1
            65        fy=find_set(animal[y].food);//fy也可能是-1
            66        ex=find_set(animal[x].enemy);
            67        ey=find_set(animal[y].enemy);
            68        if(x==y){if(oper==2)wn++;continue;}//1.x,y同類
            69        if(fy==x){wn++;continue;}//3.y吃x
            70        if(fx==y){if(oper==1)wn++;continue;}//2.x吃y
            71        if(oper==2)make(x,y,fx,fy,ex,ey);//4..x和y尚未產(chǎn)生聯(lián)系,創(chuàng)建聯(lián)系,首先是x吃y,其次y的food類吃x
            72        if(oper==1){//4..x和y尚未產(chǎn)生聯(lián)系,創(chuàng)建聯(lián)系
            73            t=union_set(x,y);
            74            u=union_set(fx,fy);
            75            v=union_set(ex,ey);
            76            animal[t].food=u;
            77            animal[t].enemy=v;
            78            if(u!=-1){
            79                animal[u].enemy=t;
            80                animal[u].food=v;}
            81            if(v!=-1){
            82            animal[v].food=t;
            83            animal[v].enemy=u;}}
            84    }
            85    printf("%d\n",wn);
            86    return 0;
            87}
            if(u!=-1)if(v!=-1)這里折騰了我兩天
            posted on 2008-01-31 20:39 zoyi 閱讀(1513) 評(píng)論(5)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)

            FeedBack:
            # re: pku 1182 食物鏈
            2009-03-30 21:36 | zoyi
            有四百多人看了~~居然沒有一個(gè)人留言~~世態(tài)炎涼丫~~  回復(fù)  更多評(píng)論
              
            # re: pku 1182 食物鏈
            2009-04-15 20:42 | 任逍遙
            大哥,能把注解再弄的詳細(xì)點(diǎn)嗎?
            小弟不才,看不懂呀。  回復(fù)  更多評(píng)論
              
            # re: pku 1182 食物鏈
            2009-04-16 18:46 | zoyi
            哈哈~~好久以前寫嗒~~湊活一下吧~哈哈~~@任逍遙
              回復(fù)  更多評(píng)論
              
            # re: pku 1182 食物鏈
            2009-08-14 00:07 | 汪淼
            溜達(dá)溜達(dá)  回復(fù)  更多評(píng)論
              
            # re: pku 1182 食物鏈
            2011-09-01 16:32 | kid2012
            大哥 這樣也太復(fù)雜了點(diǎn)吧 能把思路講清楚不
              回復(fù)  更多評(píng)論
              
            歡迎光臨 我的白菜菜園

            <2008年3月>
            2425262728291
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            常用鏈接

            留言簿(8)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊(cè)

            acmer

            online judge

            隊(duì)友

            • mango_young
            • 麥兜同學(xué)。。不要玩游戲了
            • samehere
            • 甜菜姐姐。。。

            技術(shù)

            朋友

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            三级韩国一区久久二区综合| 久久亚洲精品成人AV| 亚洲国产小视频精品久久久三级 | 久久久久这里只有精品 | 久久香蕉国产线看观看精品yw| 91秦先生久久久久久久| 亚洲国产另类久久久精品黑人| 精品乱码久久久久久夜夜嗨| 亚洲欧洲日产国码无码久久99| 国产精品嫩草影院久久| 国产精品美女久久久久久2018| 久久人人爽人人精品视频| 国产成人精品免费久久久久| 欧美精品乱码99久久蜜桃| 日本久久久久久中文字幕| 无码AV中文字幕久久专区| 色狠狠久久综合网| 久久99久久成人免费播放| 国产韩国精品一区二区三区久久 | 亚洲中文字幕无码久久2017| 色综合久久88色综合天天 | 久久九九全国免费| 国产精品久久久久久| 精品国际久久久久999波多野| 久久SE精品一区二区| 一本久久免费视频| 要久久爱在线免费观看| 久久久久一级精品亚洲国产成人综合AV区| 99久久国产热无码精品免费| 国产亚洲美女精品久久久2020| 国产69精品久久久久观看软件| 一97日本道伊人久久综合影院| 亚洲国产高清精品线久久| 欧美粉嫩小泬久久久久久久 | 久久精品国产免费一区| 精品久久久久久久无码| 精品免费tv久久久久久久| 久久精品这里热有精品| 国内精品久久久久久久亚洲| 老司机午夜网站国内精品久久久久久久久| 久久伊人色|