3 条题解
- 
  0Guest LV 0 
- 
  2#include<iostream> 
 using namespace std;
 int a[21][21],c[21],num,n;
 bool b[21];
 void dfs(int x)
 {for(int i=1;i<=n;i++) 
 if(a[x][i]&&!b[i]) //x与i有联系且i没被访问
 {
 c[++num]=i; //存储
 b[i]=1; //标记
 dfs(i); //
 }
 }
 int main()
 {cin>>n; 
 for(int i=1;i<=n;i++)
 for(int j=1;j<=n;j++)
 cin>>a[i][j];for(int i=1;i<=n;i++) 
 if(!b[i]) { //没被访问
 c[++num]=i; //储存
 b[i]=1; //标记
 dfs(i); //重搜
 }for(int i=1;i<=num-1;i++) 
 cout<<c[i]<<"-";cout<<c[num]; 
 return 0;
 }
- 
  1#include<bits/stdc++.h> 
 using namespace std;
 int n,a[21][21],b[21],num=0,c[21];
 void dfs(int x)
 {
 c[x]=1;
 num++;
 b[num]=x;
 if(num==n)
 {
 cout<<b[1];
 for(int i=2;i<=n;i++)
 {
 cout<<'-'<<b[i];
 }
 exit(0);
 }
 for(int i=1;i<=n;i++)
 {
 if(a[x][i]==1&&!c[i])
 {
 dfs(i);
 }
 }
 }
 int main()
 {
 cin>>n;
 for(int i=1;i<=n;i++)
 {
 for(int j=1;j<=n;j++)
 {
 cin>>a[i][j];
 }
 }
 for(int i=1;i<=n;i++)
 {
 if(!c[i])
 {
 dfs(i);
 }
 }
 return 0;
 }
- 
  0#include<bits/stdc++.h> 
 using namespace std;
 const int N=22;
 int n,a[N][N],out[N],check[N],num=0;
 void print()
 {
 cout<<out[1];
 for(int j=2;j<=n;j++)
 {
 cout<<'-'<<out[j];
 }
 cout<<endl;} 
 void sb(int x)//x:节点编号 y:遍历数
 {
 if(num==n)
 {
 print();
 exit(0);
 }
 else
 {
 for(int i=1;i<=n;i++)
 {
 if(a[x][i]&&!check[i])
 {
 check[i]=1;
 out[++num]=i;
 sb(i);
 }
 }} 
 }
 int main()
 {cin>>n; 
 for(int i=1;i<=n;i++)
 for(int j=1;j<=n;j++)
 {
 cin>>a[i][j];
 }
 for(int i=1;i<=n;i++)
 if(!check[i])
 {
 out[++num]=i;
 check[i]=1;sb(i);
 }
 return 0;
 }
- 1
信息
- ID
- 1017
- 难度
- 8
- 分类
- (无)
- 标签
- 递交数
- 13
- 已通过
- 7
- 通过率
- 54%
- 上传者