2 条题解
-
0
#include<bits/stdc++.h> using namespace std; #define PII pair<int,int> const int N=5e4+10; vector<PII>G[N]; int n,m,st,p,t,dis[N],vis[N]; void dij() { 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; if(dis[y]>dis[x]+w)dis[y]=dis[x]+w,q.push({dis[y],y}); } } } int main() { int q;scanf("%d%d%d",&n,&m,&q);st=1; for(int i=1,x,y,w;i<=m;i++)scanf("%d%d%d",&x,&y,&w),G[x].push_back({y,w}),G[y].push_back({x,w}); dij(); while(q--) { int x,y;scanf("%d%d",&x,&y); printf("%d\n",dis[x]+dis[y]); } return 0; } -
0
#include<bits/stdc++.h> using namespace std; #define PII pair<int,int> const int N=5e4+10; vector<PII>G[N]; int n,m,st,p,t,dis[N],vis[N]; void dij() { 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; if(dis[y]>dis[x]+w)dis[y]=dis[x]+w,q.push({dis[y],y}); } } } int main() { int q;scanf("%d%d%d",&n,&m,&q);st=1; for(int i=1,x,y,w;i<=m;i++)scanf("%d%d%d",&x,&y,&w),G[x].push_back({y,w}),G[y].push_back({x,w}); dij(); while(q--) { int x,y;scanf("%d%d",&x,&y); printf("%d\n",dis[x]+dis[y]); } return 0; }
- 1
信息
- ID
- 2249
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 19
- 已通过
- 11
- 上传者