社区讨论
明明是个裸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 条回复,欢迎继续交流。
正在加载回复...