首页 > 代码库 > 一笔画

一笔画

一笔画  模板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 }

 

一笔画