萌新刚学OI,求助SPFAQwQ
  • 板块学术版
  • 楼主SIXIANG32
  • 当前回复40
  • 已保存回复40
  • 发布时间2020/7/3 20:53
  • 上次更新2023/11/6 23:42:48
查看原帖
萌新刚学OI,求助SPFAQwQ
298549
SIXIANG32楼主2020/7/3 20:53
#include<iostream>
#include<queue>
using namespace std;
struct node{
   int x,y,val;
};
node gra[10010];
long long dis[10010];
bool vis[10010];
int cnt[10010];
int n,m,s;
bool SPFA()
{
   for(int p=1;p<=n;p++)
   	dis[p]=2147483647;
   dis[s]=0;
   queue<int>que;
   que.push(s);
   while(!que.empty())
   {
   	int fr=que.front();
   	que.pop();
   	vis[fr]=0;
   	cnt[fr]++;
   	if(cnt[fr]>n)
   		return 0;
   	for(int p=0;p<que.size();p++)
   	{
   		if(dis[p]<dis[fr]+gra[p].val)
   		{
   			dis[p]=dis[fr]+gra[p].val;
   			if(!vis[p])
   			{
   				vis[p]=1;
   				que.push(p);
   			}
   		}
   	}
   }
   return 1;
} 
int main()
{
   cin>>n>>m>>s;
   for(int p=1;p<=n;p++)
   	cin>>gra[p].x>>gra[p].y>>gra[p].val;
   SPFA();
   for(int p=1;p<=n;p++)
   	cout<<dis[p]<<' ';
}

萌新刚学最短路,求助TAT

2020/7/3 20:53
加载中...