社区讨论

明明是个裸SPFA 为什么50分。。

P1396营救参与者 4已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@mi6w73ff
此快照首次捕获于
2025/11/20 11:49
4 个月前
此快照最后确认于
2025/11/20 11:49
4 个月前
查看原帖
CPP
#include<cstdio>
#include<queue>
#define N 10010
#define INF 999999999
using namespace std;
struct Edge{int to,next,w;}e[N<<2];
int first[N],dis[N];
bool book[N];
queue<int>q;
int mmax(int a,int b){return a>b?a:b;}
int main()
{
	int n,m,s,t,i;
	scanf("%d%d%d%d",&n,&m,&s,&t);
	int u,v,w;
	for(i=1;i<=m;i++)
	{
		scanf("%d%d%d",&u,&v,&w);
		e[i]=(Edge)	{v,first[u],w};first[u]=i;
		e[i+m]=(Edge){u,first[v],w};first[v]=i+m;
	}
	for(i=1;i<=n;i++)
		dis[i]=INF;
	q.push(s);
	book[s]=true;
	dis[s]=0;
	while(!q.empty())
	{
		u=q.front();q.pop();
		int k=first[u];
		while(k)
		{
			v=e[k].to;
		if(dis[v]>mmax(dis[u],e[k].w))
		{
			dis[v]=mmax(dis[u],e[k].w);
			if(!book[v]){q.push(v);book[v]=true;}
		}
		k=e[k].next;
	}
}
printf("%d",dis[t]);
return 0;
} 

回复

8 条回复,欢迎继续交流。

正在加载回复...