![在这里插入图片描述](https://img-blog.csdnimg.cn/20200531104047572.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMjEyMjM0,size_16,color_FFFFFF,t_70)
#include<bits/stdc++.h>
using namespace std;
int G[205][205];
int k;
int m,n,sumSmall=99999999,idlast;
void isWhat(int index){
int num,flag=1,sum=0;
scanf("%d",&num);
vector<int>vec(num);
set<int>s;
for(int i=0;i<num;++i){
scanf("%d",&vec[i]);
s.insert(vec[i]);
}
for(int j=0;j<num-1;++j){
if(G[vec[j]][vec[j+1]]==0)flag=0;
sum+=G[vec[j]][vec[j+1]];
}
if(flag==0){
printf("Path %d: NA (Not a TS cycle)\n",index);
}else if(vec[0]!=vec[num-1]||s.size()!=n){
printf("Path %d: %d (Not a TS cycle)\n",index,sum);
}else if(num==n+1){
printf("Path %d: %d (TS simple cycle)\n",index,sum);
if(sum<sumSmall){
sumSmall=sum;
idlast=index;
}
}else{
printf("Path %d: %d (TS cycle)\n",index,sum);
if(sum<sumSmall){
sumSmall=sum;
idlast=index;
}
}
}
int main(){
scanf("%d%d",&n,&m);
fill(G[0],G[0]+205*205,0);
for(int i=0;i<m;++i){
int id1,id2,r;
scanf("%d %d %d",&id1,&id2,&r);
G[id1][id2]=G[id2][id1]=r;
}
scanf("%d",&k);
for(int i=1;i<=k;++i){
isWhat(i);
}
printf("Shortest Dist(%d) = %d\n",idlast,sumSmall);
return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200531104250593.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMjEyMjM0,size_16,color_FFFFFF,t_70)
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int>G[1005];
bool tag=true;
int m,n,k,num;
cin>>n>>m;
int hashtab[10005];
for(int i=0;i<m;++i){
int id1,id2;
cin>>id1>>id2;
G[id1].push_back(id2);
hashtab[id2]++;
}
cin>>k;
for(int i=0;i<k;++i){
bool flag=true;
vector<int>haha(hashtab,hashtab+n+1);
for(int j=0;j<n;++j){
cin>>num;
if(haha[num]!=0){
flag=false;
}
for(int it:G[num])haha[it]--;
}
if(flag==true)continue;
if(flag==false&&tag==true){
cout<<i;
}if(flag==false&&tag==false){
cout<<" "<<i;
}
tag=false;
}