78分求助
  • 板块P1807 最长路
  • 楼主Quenna
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/6/11 22:03
  • 上次更新2023/10/23 13:19:20
查看原帖
78分求助
697421
Quenna楼主2023/6/11 22:03

我是真不理解#5#6不TLE,给我来MLE,太6了

#include<bits/stdc++.h>
using namespace std;
int n,m,u,v,w,ans=-1;
vector<short> p1[1501],p2[1501];//p1是连接的点,p2是权值 
int p[1501];//连接条数 
bool h[1501];//BFS防止重复连接数组 
queue<short> q,q1;
void BFS(){ 
	q.push(1);//初始点 
	q1.push(0);
	while(q.empty()){
		memset(h,0,sizeof(h));//清空 
		for(short i=0;i<q.size();i++){
			for(short j=0;j<p[q.front()];j++){
				if(p1[q.front()][j]==n) ans=max(ans,q1.front()+p2[q.front()][j]); 
				else{
					if(!h[p1[q.front()][j]]){//如果没有加入过 
						q.push(p1[q.front()][j]);
						q1.push(q1.front()+p2[q.front()][j]);
					}
				}
			}
			q.pop();//out 
			q1.pop();
		}
	}
}
int main(){
	cin>>n>>m;
	for(short i=0;i<m;i++){
		cin>>u>>v>>w;
	    p1[u].push_back(v);
		p2[u].push_back(w);
		p[u]++;
	}
	BFS();//防伪标识
	cout<<ans<<endl;
}
2023/6/11 22:03
加载中...