POJ 1300 – 閱讀理解+噁心輸入+歐拉迴路

來源:互聯網
上載者:User

     題意不太好理解....大致上: 是從某個指定的房間出發...問能否回到0房間...並且關掉圖中所有的門..而門是關上後無法開啟的...

     輸入比較奇葩..我是gets讀入一行後再處理的...

     再抽象一些...把門開作邊..那麼相當於找一條路徑..使得便利所有的邊..且每個邊只遍曆一次...這裡分為兩種情況..一種是從0出發..走完所有的邊回到0...這是典型的歐拉迴路...另一種是從其他點出發..到達0點..並且走完所有的邊..

     判斷一個圖能否存在歐拉迴路..就是看所有點的度是否為偶數...因為所有的點必定都是進入多少次就要出去多少次...而只是一條路路徑而非迴路..那麼起點和終點必須是奇數的度..而其他的點的度必須為偶數...

Program:

#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>#include<map>#include<queue>#include<stack>#define ll long long#define oo 1000000000#define pi acos(-1)using namespace std;  int m,n,ans,a[105];char s[505];int main(){      int p,len,i,k;     while (~scanf("%s",s))     {           if (s[0]!='S') break;           scanf("%d%d",&m,&n);           gets(s);           memset(a,0,sizeof(a));           ans=0;           for (p=0;p<n;p++)           {                 gets(s);                 len=strlen(s);                 i=0;                 while (i<len)                 {                       k=0;                       while (s[i]>='0' && s[i]<='9')                       {                              k=k*10+s[i]-'0';                              i++;                         }                       if (k)                       {                              a[p]++;                              a[k]++;                              ans++;                                  k=0;                       }                       i++;                 }           }           gets(s);           k=0;           for (i=0;i<n;i++)              if (a[i]%2) k++;            if (!m)           {               if (!k)                   printf("YES %d\n",ans);                   else                   printf("NO\n");            }else           {               if (k==2 && a[m]%2 && a[0]%2)                   printf("YES %d\n",ans);                   else                   printf("NO\n");                           }     }     return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.