• <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>

            pku 1227 RoboContest 奇環(huán)判斷(黑白染色)

            題意是這樣,有一個(gè)無向圖,在其中的k個(gè)點(diǎn)上有機(jī)器人,在每個(gè)時(shí)刻,機(jī)器人移動(dòng)至與當(dāng)前節(jié)點(diǎn)鄰接的任意一個(gè)節(jié)點(diǎn)。問有沒有可能在某個(gè)時(shí)刻所有的機(jī)器人移動(dòng)到一個(gè)節(jié)點(diǎn)上。
            我的思路是這樣的:
            在圖連通的情況下如果圖中有奇圈,那么任意一個(gè)機(jī)器人都能夠在偶數(shù)步和奇數(shù)步內(nèi)到達(dá)任意一個(gè)節(jié)點(diǎn),如果所有的機(jī)器人都能在偶數(shù)步或者奇數(shù)步里到達(dá)某個(gè)節(jié)點(diǎn),那么就成立。因?yàn)閳D中肯定有2圈,所以先到的機(jī)器人總可以用“來回走”的形式等后面的機(jī)器人。
            這樣,算法就成型了:
            1、判斷機(jī)器人所在的節(jié)點(diǎn)是否連通
            2、判斷圖中是否有奇圈(二分圖的定義,只需黑白染色即可判斷)
            3、如果有奇圈,則輸出YES,否則,這個(gè)圖就是一個(gè)二分圖,所有的機(jī)器人都能在偶數(shù)步或者奇數(shù)步里到達(dá)某個(gè)節(jié)點(diǎn)當(dāng)且僅當(dāng)所有的機(jī)器人都在同一類節(jié)點(diǎn)中。
            還有點(diǎn)細(xì)節(jié)就是編號可能不是1,2,3..N這樣編的,所以要先hash處理下(我偷懶,直接用STL MAP了)
            貼代碼
              1 # include <cstdio>
              2 using namespace std;
              3 # define N 105
              4 # include <vector>
              5 # include <cstring>
              6 # include <map>
              7 # include <queue>
              8 vector<int> g[N];
              9 int color[N];
             10 int n,k,c;
             11 map<int,int> refer;
             12 vector<int> ins[N];
             13 vector<int> target;
             14 bool make_color()
             15 {
             16    queue<int> q;
             17    memset(color,-1,sizeof(color));
             18    q.push(target[0]);
             19    color[target[0]]=0;
             20    while(!q.empty())
             21    {
             22      int top=q.front(),c=(color[top]?0:1);
             23      q.pop();
             24      for(int i=0;i<g[top].size();i++)
             25        if(color[g[top][i]]==-1)
             26        {
             27           color[g[top][i]]=c;
             28           q.push(g[top][i]);
             29        }
             30        else if(color[g[top][i]]==color[top])
             31          return false;
             32    }
             33    return true;
             34 }
             35 bool connect()
             36 {
             37    queue<int> q;
             38    memset(color,-1,sizeof(color));
             39    q.push(target[0]);
             40    color[target[0]]=0;
             41    while(!q.empty())
             42    {
             43      int top=q.front();
             44      q.pop();
             45      for(int i=0;i<g[top].size();i++)
             46        if(color[g[top][i]]==-1)
             47        {
             48           color[g[top][i]]=0;
             49           q.push(g[top][i]);
             50        }
             51    }
             52    for(int i=0;i<target.size();i++)
             53      if(color[target[i]]==-1)
             54        return false;
             55    return true;
             56 }
             57 int main()
             58 {
             59     int testcase;
             60     scanf("%d",&testcase);
             61     while(testcase--)
             62     {
             63         c=0;
             64         refer.clear();
             65         scanf("%d%d",&n,&k);
             66         for(int i=0;i<n;i++)
             67         {
             68           ins[i].clear();
             69           int id,num;
             70           scanf("%d%d",&id,&num);
             71           while(num--)
             72           {
             73              int t;
             74              scanf("%d",&t);
             75              ins[i].push_back(t);
             76           }
             77           refer[id]=c++;
             78         }
             79         for(int i=0;i<n;i++)
             80         {
             81            g[i].clear();
             82            for(int j=0;j<ins[i].size();j++)
             83              g[i].push_back(refer[ins[i][j]]);
             84         }
             85         target.clear();
             86         while(k--)
             87         {
             88            int t;
             89            scanf("%d",&t);
             90            target.push_back(refer[t]);
             91         }
             92         if(!connect())
             93           printf("NO\n");
             94         else if(!make_color())
             95            printf("YES\n");
             96         else
             97         {
             98             bool flag=true;
             99             for(int i=1;i<target.size()&&flag;i++)
            100               if(color[target[i]]!=color[target[i-1]])
            101                 flag=false;
            102             if(flag) printf("YES\n");
            103             else printf("NO\n");
            104         }        
            105     }
            106     return 0;
            107 }
            108 


            posted on 2010-11-05 13:21 yzhw 閱讀(342) 評論(0)  編輯 收藏 引用 所屬分類: graph

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導(dǎo)航

            統(tǒng)計(jì)

            公告

            統(tǒng)計(jì)系統(tǒng)

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            久久久国产精品网站| 国产 亚洲 欧美 另类 久久| 狠狠人妻久久久久久综合蜜桃 | 成人国内精品久久久久影院VR | 伊人久久综在合线亚洲2019| 久久久老熟女一区二区三区| 久久91精品国产91久| 热99RE久久精品这里都是精品免费| 国产精品va久久久久久久| 99久久久久| 久久久久亚洲?V成人无码| 久久久久人妻精品一区三寸蜜桃| 久久黄视频| 亚洲欧美一区二区三区久久| 伊人久久无码精品中文字幕| 精品一二三区久久aaa片| 欧美一区二区三区久久综合| 久久精品亚洲一区二区三区浴池 | 国产成人99久久亚洲综合精品| 99久久99久久精品国产片| 久久精品一区二区三区中文字幕| 久久免费大片| 中文字幕人妻色偷偷久久| 精品久久久久久久无码| 99久久免费只有精品国产| 青青草原综合久久大伊人导航| 久久久www免费人成精品| 国产午夜精品久久久久免费视| 久久99精品国产99久久| 久久久久亚洲AV综合波多野结衣| 人妻无码αv中文字幕久久琪琪布| 久久久久亚洲av无码专区| 国产成人精品久久亚洲高清不卡| 亚洲人AV永久一区二区三区久久 | 一级女性全黄久久生活片免费| 无码人妻精品一区二区三区久久 | 久久99国产综合精品女同| 久久久久国产精品嫩草影院 | 国内精品伊人久久久久| 久久久久无码国产精品不卡| 91精品国产高清91久久久久久|