#include <iostream>
#include<algorithm>
#include<set>
using namespace std;
int graph[201][201];
int main()
{
int numv,nume,numcase,numvc,shortest=-1,distance,spath;
int a,b,start,stop;
bool win=true;
cin>>numv>>nume;
set<int> st;
for(int i=0;i<nume;i++)
{
cin>>a>>b;
cin>>graph[a][b];
graph[b][a]=graph[a][b];
}
cin>>numcase;
for(int i=1;i<=numcase;i++)
{
st.clear();
win=1;
distance=0;
cin>>numvc;
cin>>a;
start=a;
st.insert(a);
for(int j=1;j<numvc;j++)
{
cin>>b;
if(graph[a][b]==0) {win=false; break;}
if(j==numvc-1) stop=b;
st.insert(b);
distance+=graph[a][b];
a=b;
}
if(win){
cout<<"Path "<<i<<": "<<distance;
if(start==stop&&st.size()==numv&&numv+1==numvc) {
cout<<" (TS simple cycle)"<<endl;
}
else if(start==stop&&st.size()==numv) cout<<" (TS cycle)"<<endl;
else cout<<" (Not a TS cycle)"<<endl;
if(st.size()==numv&&start==stop&&(shortest==-1||shortest>distance)) {
shortest=distance;
spath=i;
}
}else{cout<<"Path "<<i<<": NA (Not a TS cycle)"<<endl;}
}
cout<<"Shortest Dist("<<spath<<") = "<<shortest<<endl;
return 0;
}
pata1150 测试点12答案错误 乌乌
最新推荐文章于 2022-02-26 13:27:49 发布