24h購物| | PChome| 登入
2009-11-14 19:27:20| 人氣929| 回應1 | 上一篇 | 下一篇

台北縣98資訊學科能力競賽 第三題:圖形迴圈偵錯問題

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

作法 : DFS

由於N<=10 由於偷懶直接用相鄰矩陣做暴力解

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

#include<stdlib.h>
#include<stdio.h>
int map[27][27]={0},used[27]={0},MIN=2147483647;
void DFS(int now,int start,int L)
{
   int a;
   if(L>MIN) return;
   for(a=0;a<26;a++)
       if(used[a]==0&&map[now][a]==1)
          {
             used[a]=1;
             DFS(a,start,L+1);
             used[a]=0;
          }
       else
          {
             if(map[now][a]==1&&a==start&&L<MIN)
                MIN=L;
          }
}
main()
{
  int N,a,b;
  char s[10];
  scanf("%d",&N);
  while(N--)
       scanf("%s",s),map[s[0]-'A'][s[1]-'A']=1;
  for(a=0;a<26;a++)
      {
        used[a]=1;
        DFS(a,a,1);
        used[a]=0;
      }
  if(MIN!=2147483647)
       printf("%d\n",MIN);
  else printf("0\n");
  return 0;
}

台長: 來源不明
人氣(929) | 回應(1)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: 資訊競賽 |
此分類下一篇:NOIP2004 普及組 NOIP2004 3.FBI樹
此分類上一篇:台北縣98資訊學科能力競賽 第二題:密碼驗證與擷取

許胖
這題用floyd更偷懶XDDDD
2009-11-17 09:09:30
版主回應
這倒也是啦
2009-11-22 08:15:12
是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文