1 条题解
-
0
#include<bits/stdc++.h> using namespace std; typedef pair<int,int> PII; const int N=110; vector<PII>G[N]; int n,m,st,ed,dis[N];bool bk[N][N],vis[N]; void dijkstra() { priority_queue<PII,vector<PII>,greater<PII>> Q; memset(dis,0x3f,sizeof(dis));dis[st]=0; memset(vis,0,sizeof(vis)); Q.push({0,st}); while(!Q.empty()) { int x=Q.top().second; Q.pop(); if(vis[x])continue; vis[x]=1; for(auto i:G[x]) { int y=i.first,w=i.second; int t= (bk[x][y]==1)?w:0; if( dis[y]>dis[x]+t ) { dis[y]=dis[x]+t; Q.push({dis[y],y}); } } } } int main() { while(scanf("%d%d",&n,&m)!=EOF) { memset(G,0,sizeof(G)); for(int i=1,x,y,w;i<=m;i++) { scanf("%d%d%d",&x,&y,&w); G[x].emplace_back(PII{y,w}); G[y].emplace_back(PII{x,w}); } int R;scanf("%d", &R); memset(bk, 0, sizeof(bk)); for(int i=1,x,y;i<=R;i++) { scanf("%d%d",&x,&y); bk[x][y]=bk[y][x]=1; } scanf("%d%d",&st,&ed); dijkstra(); printf("%d\n",dis[ed]); } return 0; }
- 1
信息
- ID
- 261
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 311
- 已通过
- 74
- 上传者