SPFA莫名八十分,大佬求助
查看原帖
SPFA莫名八十分,大佬求助
432759
孙子笑川楼主2022/1/19 22:22

  • 以下为代码
#include<bits/stdc++.h>
using namespace std;
queue<int>q;
int n,m,s,t;
struct node{
	int from,to,next,val;
};
node edge[6500];
int color[2500],dis[2500],head[2500];
int inq[2500];
int num;
void add(int from,int to,int val){
	num++;
	edge[num].from=from;
	edge[num].to=to;
	edge[num].val=min(val,edge[num].val);
	edge[num].next=head[from];
	head[from]=num;
}
void spfa(){
	memset(dis,0x3f3f3f3f,sizeof(dis));
	dis[s]=0;
	q.push(s);
	inq[s]=1;
	while(!q.empty()){
		int u=q.front();
		q.pop();
		inq[u]=0;
		for(int i=head[u];i!=0;i=edge[i].next){
			int tt=edge[i].to,vv=edge[i].val;
			if(dis[tt]>dis[u]+vv){
				dis[tt]=dis[u]+vv;
				if(inq[tt]==0){
					q.push(tt);
					inq[tt]=1;
				}
			}
		}
	}
}
int main(){
for(int i=1;i<=6500;i++){
	edge[i].val=0x3f3f3f3f;
}
	cin>>n>>m>>s>>t;
	for(int i=1;i<=m;i++){
		int fr,to1,vv;
		cin>>fr>>to1>>vv;
		add(fr,to1,vv);
		add(to1,fr,vv);
	}
	spfa();
	cout<<dis[t];
}
2022/1/19 22:22
加载中...