一笔画

一笔画  模板dfs

 1 #include<iostream>
 2 #include<queue>
 3 using namespace std;
 4 int map[110][110],du[500][500],m,n,ans[110],sum,start;
 5 void dfs(int k)
 6 {
 7     
 8     for(int i=1;i<=du[k][0];i++)
 9     {
10         if(map[k][du[k][i]]==1)
11         {
12             map[k][du[k][i]]=map[du[k][i]][k]=0;
13             dfs(du[k][i]);
14         }
15     }ans[++sum]=k;
16     cout<<k<<' ';
17 }
18 int main()
19 {
20     cin>>n>>m;
21     int x,y;
22     for(int i=1;i<=m;i++)
23     {
24         cin>>x>>y;
25         map[x][y]=map[y][x]=1;
26         du[x][++du[x][0]]=y;
27         du[y][++du[y][0]]=x;
28     }
29     int cnt=0;
30     start=1;
31     for(int i=1;i<=n;i++)
32     {
33         if(du[i][0]%2==1)cnt++,start=i;
34         if(du[i][0]==0){cout<<"no";return 0;}
35     }
36     if(cnt==0||cnt==2)dfs(start);
37     else 
38     {
39         cout<<"no";
40         return 0;
41     }
42 }

 

posted @ 2017-04-11 21:53  橘生淮南终洛枳  阅读(222)  评论(0编辑  收藏  举报