社区讨论
90pts求条...
P3371【模板】单源最短路径(弱化版)参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhj25i55
- 此快照首次捕获于
- 2025/11/03 19:29 4 个月前
- 此快照最后确认于
- 2025/11/03 19:29 4 个月前
非常猎奇的解法不要在意。
https://www.luogu.com.cn/record/list?pid=P3371&user=1905662
———测试点详情
如回必关
CPP#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6 +5;
int n,m,start,i,j,k;
int u[maxn],v[maxn],w[maxn],first[maxn],nex[maxn],dis[maxn],book[maxn],que[maxn],head=1,tail=1;
int main(void)
{
cin>>n>>m>>start;
for(int i=1;i<=n;i++) dis[i]=999999;
for(int i=1;i<=n;i++) first[i]=-1;
dis[start]=0;
for(int i=1;i<=m;i++){
cin>>u[i]>>v[i]>>w[i];
nex[i]=first[u[i]];
first[u[i]]=i;
}
que[tail]=start;
tail++;
book[start]=1;
while(head<tail){
k=first[que[head]];
while(k!=-1){
if(dis[v[k]]>dis[u[k]]+w[k]){
dis[v[k]]=dis[u[k]]+w[k];
if(book[v[k]]==0){
que[tail]=v[k];
tail++;
book[v[k]]=1;
}
}
k=nex[k];
}
book[que[head]]=0;
head++;
}
for(int i=1;i<=n;i++)
{
if(dis[i]==999999)
{
cout<<2147483647;
}
else
{
cout<<dis[i]<<" ";
}
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...