乱写的死循环求调
查看原帖
乱写的死循环求调
422996
HeCao2008楼主2022/12/23 09:09
#include<bits/stdc++.h>
using namespace std;
const int maxn=114514;
vector< int > edge[maxn],fanedge[maxn];
queue< int > q,qq;
int a[maxn],dist[maxn],ddist[maxn],n,m;
int main(){
	ios::sync_with_stdio(false);
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=m;i++){
		int x,y,z;
		cin>>x>>y>>z;
		edge[x].push_back(y);
		fanedge[y].push_back(x); 
		if(z==2){
		    edge[y].push_back(x);	
		    fanedge[x].push_back(y); 
		}
	}
	q.push(1);
	dist[1]=a[1];
	while(!q.empty()){
		int u=q.front();q.pop();
		for(int i=0;i<edge[u].size();i++){
			int v=edge[u][i];
			dist[v]=min(dist[u],a[v]);
			q.push(v);
		}
	}
	ddist[n]=a[n];
	qq.push(n);
	while(!qq.empty()){
		int u=q.front();qq.pop();
		for(int i=0;i<fanedge[u].size();i++){
			int v=fanedge[u][i];
			ddist[v]=max(ddist[u],a[v]);
			qq.push(v);
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++)ans=max(ans,ddist[i]-dist[i]);
	cout<<ans<<endl;
	return 0;
}
2022/12/23 09:09
加载中...