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%
- 上传者