程序:
#include <iostream>
using namespace std;
const int V=100;
int n,m,ans,e[V][V];
bool visited[V];
void dfs(int x, int len)
{
int i;
visited[x]=true;
for(int i=1;i<=n;i++)
if((!visited[i])&&(e[x][i]!=-1))
dfs(i,len+e[x][i])
visited[x]=false;
}
int main()
{
int i,j,a,b,c;
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
e[i][j]=-1;
for(i=1;i<=m;i++){
cin>>a>>b>>c;
e[a][b]=c;
e[b][a]=c;
}
for(i=1;i<=n;i++)
visited[i]=false;
ans=0;
for(i=1;i<=n;i++)
dfs(i,0);
cout<<ans<<endl;
}
错题一:
第19行的输入中,如果满足 m=n*(n-1)/2,则20~22行的初始化可以省略。()
正确答案:对
解析:
m=n*(n-1)/2表示是完全图。
错题二:
将第 31 行的代码换成 "for(i=n;i>=1;i--)" 程序结果不受任何影响。()
正确答案:对
解析:
遍历顺序不影响。
错题三:
若输入数据为
4 2
1 2 1
3 4 1
则输出结果是()
A.1 B.2 C.3 D.4
正确答案:C
解析: 根据程序执行一遍。
剩余两道错题和错题三差不多,则不写解析。
错题四:
若输入数据为
4 6
1 2 1
2 3 1
3 4 1
4 1 1
1 3 1
2 4 1
则输出结果是()
A.1 B.2 C.3 D.4
正确答案:C
错题五:
若输入数据为
4 6
1 2 10
2 3 20
3 4 30
4 1 40
1 3 50
2 4 60
则输出结果是()
A.60 B.80 C.100 D.150
正确答案:D