P1807最长路BFS求调
  • 板块P1807 最长路
  • 楼主Xeqwq
  • 当前回复13
  • 已保存回复13
  • 发布时间2022/2/5 17:49
  • 上次更新2023/10/28 09:38:48
查看原帖
P1807最长路BFS求调
229373
Xeqwq楼主2022/2/5 17:49

无环 两个点TLE一个点MLE 为什么死循环没查出来

#include <iostream>
#include <utility>
#include <queue>
using namespace std;
int n,m;
const int Maxn=1505,Maxm=5e4+5;
int edge;
int to[Maxm],nxt[Maxm],head[Maxn],w[Maxm];
int d[Maxn];
void add(int u,int v,int W)
{
	to[++edge]=v;
	w[edge]=W;
	nxt[edge]=head[u];
	head[u]=edge;
}
queue<int> q;
int main()
{
	int u,v,W;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d%d",&u,&v,&W);
		add(u,v,W);
	}
	q.push(1);
	bool flag=false;
	while(!q.empty())
	{
		cout<<q.front()<<endl;
		u=q.front();
		q.pop();
		for(int now=head[u];now;now=nxt[now])
		{
			v=to[now];
			if(v==n) flag=true;
			W=w[now];
			d[v]=max(d[v],d[u]+W);
			q.push(v);
		}
	}
	if(flag==true) cout<<d[n];
	else cout<<"-1";
	return 0;
}
2022/2/5 17:49
加载中...