社区讨论
help!!! SPFA只有70分
P3371【模板】单源最短路径(弱化版)参与者 9已保存回复 11
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 11 条
- 当前快照
- 1 份
- 快照标识符
- @mi85xdbc
- 此快照首次捕获于
- 2025/11/21 09:09 4 个月前
- 此快照最后确认于
- 2025/11/21 09:46 4 个月前
C
#include "iostream"
#include "cstdio"
#include "queue"
#include "cmath"
using namespace std;
long long n,m,s;
long long f[500006],g[500006],w[500006];
long long dis[10006];
long long q[10006];
long long l=1,r=2;
long long flag[10006];
long long fx[10006][10006]={ };
long long fy[10006][10006]={ };
long long a[10006]={ };
int main()
{
cin>>n>>m>>s;
for(long long i=1;i<=m;i++)
{
cin>>f[i]>>g[i]>>w[i];
a[f[i]]++;
fx[f[i]][a[f[i]]]=g[i];
fy[f[i]][a[f[i]]]=w[i];
}
/* for(int i=1;i<=n;i++)
{
cout<<f_max[i]<<endl;
for(int j=1;j<=f_max[i];j++)
cout<<fx[i][j]<<" ";
cout<<endl;
}*/
for(long long i=1;i<=n;i++)
dis[i]=2147483647;
dis[s]=0;
q[1]=s;
flag[s]=true;
while(l<r)
{
l++;
long long i=q[l-1];
flag[i]=false;
for(long long p=1;p<=a[i];p++)
{
if(dis[fx[i][p]]>dis[i]+fy[i][p])
{
dis[fx[i][p]]=dis[i]+fy[i][p];
if(flag[fx[i][p]]==false)
{
q[r]=fx[i][p];
r++;
flag[fx[i][p]]=true;
}
}
}
}
for(long long i=1;i<=n;i++)
cout<<dis[i]<<" ";
return 0;
}
不知道问题出在哪里
求各位大佬指点
回复
共 11 条回复,欢迎继续交流。
正在加载回复...