没有输出的错误代码1
过样例但是多处错误的代码2
以上两个后两个测试点错误是因为dist 和描述 之间忘记输出空格
前两个测试点参照浒鱼鱼代码改好了。但我始终看不出来区别在哪里
//
// Created by ZhangXiaoYu on 2020/7/16.
//
#include <iostream>
#include <vector>
#include <set>
#include <cstring>
using namespace std;
int g[210][210];
//如果set中城市数量小于n的话,直接就是not
int main(){
int n,m,k;
cin>>n>>m;//n是城市个数,m是边数,
for(int i=0;i<m;i++){
int a,b,dist;
cin>>a>>b>>dist;
g[a][b]=g[b][a]=dist;
}
cin>>k;//k是路径数
int c;
int ans = 9999999;
int tag=-1;
for(int i=1;i<=k;i++){
set<int>s;
vector<int >v;
cin>>c;//路径有几个节点
int node;
int dis=0;
// cin>>node;
int error_flag=0;
// int first_node =node;
// v.push_back(node);
for(int j=0;j<c;j++){
cin>>node;
v.push_back(node);
s.insert(node);
if(j!=0){
dis+=g[v[j-1]][v[j]];
if(g[v[j-1]][v[j]]==0)error_flag = 1;
}
}
int flag =0;
printf("Path %d: ",i);
if(error_flag){//如果不连通
printf("NA");
}
else cout<<dis; //说明连通
if(s.size()!=n||v[0]!=v[v.size()-1] || error_flag){//城市不够或者没有回到起点
printf(" (Not a TS cycle)\n");
flag=1;
continue;
}
else if(v.size()>n+1)printf(" (TS cycle)\n");
else printf(" (TS simple cycle)\n");
if(ans>dis){
ans = dis;
tag = i;
}
}
printf("Shortest Dist(%d) = %d\n",tag,ans);
}