社区讨论
50分,做了一天了,不会了qwq
P2865[USACO06NOV] Roadblocks G参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo962szg
- 此快照首次捕获于
- 2023/10/28 06:10 2 年前
- 此快照最后确认于
- 2023/10/28 06:10 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=1000010,M=200000+10;
struct Edge{
int v,w,nxt;
}e[M];
int head[N];
int n,m,s,cnt;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > Q;
int dis[N],dis2[N];
void addEdge(int u,int v,int w) {
e[++cnt]=(Edge){v,w,head[u]},head[u]=cnt;
}
void dijkstra(){
memset(dis,0x3f,sizeof dis);
dis[s]=0;
Q.push(make_pair(0,s));
while(!Q.empty()){
int d=Q.top().first;
int u=Q.top().second;
Q.pop();
if(d!=dis[u]) continue;
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].v,w=e[i].w;
if(dis[u]+w<dis[v]){
dis2[v]=dis[v];
dis[v]=dis[u]+w,Q.push(make_pair(dis[v],v));
}
else if(dis[u]+w<dis2[v]) dis2[v]=dis[u]+w;
}
}
}
int main(){
cin>>n>>m;
s=1;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
addEdge(u,v,w);
addEdge(v,u,w);
}
dijkstra();
printf("%d",dis2[n]);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...