思路
模拟,不知道为什么结构体过不了
代码
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; int n,m,g[210][210]; struct node{ int val,id; }a[210]; int vis[210],path[210]; int idx=0; bool cmp(node a,node b){ if(a.val==b.val) return a.id<b.id; return a.val<b.val; } int main(){ cin>>n>>m; memset(g,-1,sizeof g); for(int i=1;i<=m;i++){ int u,v,w;cin>>u>>v>>w; g[u][v]=g[v][u]=w; } int q;cin>>q; int res=0x3f3f3f3f,pos=0; for(int qq=1;qq<=q;qq++){ memset(vis,0,sizeof vis); int sum=0; int k;cin>>k; for(int i=1;i<=k;i++){ cin>>path[i]; vis[path[i]]++; } bool flag=1; path[0]=path[k+1]=0; for(int i=1;i<=n;i++){ if(vis[i]!=1){ flag=0;break; } } for(int i=0;i<=k;i++){ if(g[path[i]][path[i+1]]<0){ flag=0;break; } } if(flag){ for(int i=0;i<=k;i++) sum+=g[path[i]][path[i+1]]; if(sum<res){ res=sum;pos=qq; } idx++; } } cout<<idx<<endl; cout<<pos<<" "<<res<<endl; return 0; }