题目
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=110;
struct node{
int x,len;
};
vector<node> tu[N];
bool v[N][N],v1[N];
int n,m,d,a,b,min_len=INT_MAX;
void dfs(int x,int fa,int len){
if(x==b){
min_len=min(min_len,len);
return ;
}
for(int i=0;i<tu[x].size();i++){
if(tu[x][i].x==fa) continue;
else if(v[x][tu[x][i].x] && !v1[tu[x][i].x]){
v1[tu[x][i].x]=true;
dfs(tu[x][i].x,x,len);
}
else if(!v1[tu[x][i].x]){
v1[tu[x][i].x]=true;
dfs(tu[x][i].x,x,len+tu[x][i].len);
}
}
}
signed main(){
memset(v,true,sizeof(v));
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y,len;
cin>>x>>y>>len;
tu[x].push_back({y,len});
tu[y].push_back({x,len});
}
cin>>d;
for(int i=1;i<=d;i++){
int x,y;
cin>>x>>y;
v[x][y]=false;
v[y][x]=false;
}
cin>>a>>b;
v1[a]=true;
dfs(a,a,0);
cout<<min_len;
return 0;
}