社区讨论
SPFA为啥全RE
P4779【模板】单源最短路径(标准版)参与者 3已保存回复 15
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 14 条
- 当前快照
- 1 份
- 快照标识符
- @lrw0mpd9
- 此快照首次捕获于
- 2024/01/27 19:55 2 年前
- 此快照最后确认于
- 2024/01/27 21:45 2 年前
样例过了,但是全RE(悲
代码:```cpp
include <stdio.h> //Dijkstra
include <string.h>
include
include
using namespace std;
int n,m,s,num=0,dis[11451]={0};
int head[11451]={0};
bool vis[11451]={0};
struct Edge{
int from;
int to;
int Next;
int Distance;
}edge[21451];
void AddEdge(int From,int To,int Dis){
edge[++num].Next=head[From];
head[From]=num;
edge[num].from=From;
edge[num].to=To;
edge[num].Distance=Dis;
return;
}
int main(){
CPPscanf("%d%d%d",&n,&m,&s);
for(int i=0;i<m;i++){
int u,v,d;
scanf("%d%d%d",&u,&v,&d);
AddEdge(u,v,d);
}
memset(dis,0x3f,sizeof(dis));
queue<int>qu;
qu.push(1);
dis[1]=0;
vis[1]=1;
while(!qu.empty()){
int Now=qu.front();
qu.pop();vis[Now]=0;
for(int i=head[Now];i;i=edge[i].Next){
if(dis[edge[i].to]>dis[Now]+edge[i].Distance){
dis[edge[i].to]=dis[Now]+edge[i].Distance;
if(!vis[edge[i].to]){
vis[edge[i].to]=1;
qu.push(edge[i].to);
}
}
}
}
for(int i=1;i<=n;i++){
printf("%d ",dis[i]);
}
return 0;
}
CPP回复
共 15 条回复,欢迎继续交流。
正在加载回复...