WA了 7,8,9,10 四个点
#include<bits/stdc++.h>
using namespace std;
const int N=110;
struct E{
int to,nxt,w;
}e[N*N];
struct node{
int dis,id;
bool operator<(const node&a)const{
return a.dis<dis;
}
};
priority_queue<node>q;
int n,m,d,A,B,cnt;
int dis[N],a[N],head[N];
bool vis[N];
void add(int u,int v,int w){
e[++cnt].to=v;
e[cnt].nxt=head[u];
a[cnt]=w;
head[u]=cnt;
}
void dijkstra(){
dis[A]=0;
q.push(node{0,A});
while(!q.empty()){
node x=q.top();q.pop();
int u=x.id;
if(vis[u]) continue;
vis[u]=true;
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to;
if(dis[v]>dis[u]+e[i].w){
dis[v]=dis[u]+e[i].w;
q.push(node{dis[v],v});
}
}
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>m;
memset(dis,0x3f,sizeof(dis));
int x,y,z;
for(int i=1;i<=m;i++){
cin>>x>>y>>z;
add(x,y,z);add(y,x,z);
}
cin>>d;
for(int i=1;i<=d;i++){
cin>>x>>y;
for(int j=head[x];j;j=e[j].nxt)
if(e[j].to==y)
e[j].w=a[j];
for(int j=head[y];j;j=e[j].nxt)
if(e[j].to==x)
e[j].w=a[j];
}
cin>>A>>B;
dijkstra();
cout<<dis[B]<<endl;
return 0;
}