24h購物| | PChome| 登入
2009-05-13 19:18:00| 人氣397| 回應0 | 上一篇 | 下一篇

ACM 280 280 - Vertex

推薦 0 收藏 0 轉貼0 訂閱站台

作法:BFS
想法:建出關係圖,再利用關係圖進行BFS搜尋節點

/*********************************************************/

#include<stdio.h>
#include<stdlib.h>
main()
{
 int n;
 while(scanf("%d",&n)==1&&n!=0)
 {
 int a,b;
 char num[101]={0};
 char map[101][101]={0};
 while(scanf("%d",&num[0])==1&&num[0]!=0)
   {
      int top=1;
      while(scanf("%d",&num[top])==1&&num[top]!=0)
       {
         map[num[0]][num[top]]=1;
         top++;
       }
   }
  int m;
  scanf("%d",&m);
     while(m--)
       {
        int start;
         scanf("%d",&start);
         char queue[101]={0},flag[101]={0},top=0;
         queue[0]=start;
         for(a=0;a<=top;a++)/*BFS*/
           {
            int mm=queue[a];
             for(b=1;b<=n;b++)
              {
                if(map[mm][b]==1&&flag[b]==0)
                  {
                    top++;
                    flag[b]=1;/*走過就要做標記*/
                    queue[top]=b;
                  }
              }
           }
           int ans=0;
           for(a=1;a<=n;a++)
            if(flag[a]==0) ans++;
            printf("%d",ans);
           for(a=1;a<=n;a++)
            if(flag[a]==0) printf(" %d",a);
            printf("\n");
       }
  }
 return 0;
}

台長: 來源不明
人氣(397) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ACM |
此分類下一篇:ACM 10499 10499 - The Land of Justice
此分類上一篇:ACM 10783 10783 - Odd Sum

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文