社区讨论
SPFA 10分
P3371【模板】单源最短路径(弱化版)参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi5i682n
- 此快照首次捕获于
- 2025/11/19 12:29 4 个月前
- 此快照最后确认于
- 2025/11/19 12:29 4 个月前
CPP
#include<bits/stdc++.h>
#include<queue>
using namespace std;
int front=1,rear=1,w[3000][3000],dis[10000],flag[10000],n,m,s,x,y,z;
queue<int>dui;
/*void push(int x)
{
dui[rear]=x;
rear++;
}
int pop()
{
if (rear==front) return -99999;
int t=dui[front];
front++;
return t;
}*/
void spfa()
{
int i,j;
cin>>n>>m>>s;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
if (i==j) w[i][j]=0;
else w[i][j]=2147483647;
}
}
for (i=1;i<=m;i++)
{
cin>>x>>y>>z;
w[x][y]=z;
}
for (i=1;i<=n;i++) dis[i]=2147483647;
dis[s]=0;
dui.push(s);
flag[s]=1;
while (!dui.empty())
{
x=dui.front();
dui.pop();
flag[x]=0;
for (i=1;i<=n;i++)
{
if (w[x][i]!=2147483647)
{
if (dis[i]>dis[x]+w[x][i])
{
dis[i]=dis[x]+w[x][i];
if (flag[i]==0)
{
dui.push(i);
flag[i]=1;
}
}
}
}
}
for (i=1;i<=n;i++)
{
cout<<dis[i]<<" ";
}
}
int main()
{
spfa();
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...