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