为什么会输不完啊QAQ
  • 板块灌水区
  • 楼主うっせぇわ
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/10/28 21:24
  • 上次更新2023/10/27 05:19:37
查看原帖
为什么会输不完啊QAQ
506475
うっせぇわ楼主2022/10/28 21:24
#include <bits/stdc++.h>
using namespace std;
//queue<int> q;
int dis[1000001],head[1000001],low[1000001],vis[1000001],color[1000001];
int n,m,cnt,color_num/*,x,y*/;
struct edge{
	int to,next,w;
}e[1000001];
void addedge(int x,int y,int z){
	e[++cnt].to=y;
	e[cnt].w=z;
	e[cnt].next=head[x];
	head[x]=cnt;
	return;
}
void spfa(int S){
	queue<int> q;
	for(int i=1;i<=n;i++){
		dis[i]=10290140;
		vis[i]=0;
	}
	dis[S]=0;
	vis[S]=1;
	q.push(S);
	while(!q.empty()){
		int u=q.front();
		q.pop();
		vis[u]=0;
		for(int i=head[u];i;i=e[i].to){
			int v=e[i].to;
			if(dis[v]>dis[u]+e[i].w){
				dis[v]=dis[u]+e[i].w;
				if(!vis[v]){
					q.push(v);
					vis[v]=1;
				}
			}
		}
	}
	return;
}
//int z;
int main(){
	cin>>n>>m;
	int x,y,z;
	for(int i=1;i<=m;i++){
		cin>>x>>y>>z;
//		cout<<i<<endl;
		addedge(x,y,z);
	}
	spfa(1);
	for(int i=1;i<=n;i++){
		cout<<dis[i]<<" ";
	}
}
/*
6 8
1 3 1
3 5 1
1 2 1
2 4 1
4 1 1
3 4 1
4 6 1
5 6 1
*/

搞完死去的算法就睡觉QAQ

2022/10/28 21:24
加载中...