样例过了 但是十分
查看原帖
样例过了 但是十分
819273
LIUYC_C楼主2023/4/2 11:38
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10,INF=0x7f7f7f7f;
int h[N],w[N],e[N],ne[N],idx;
int a[N];

int mi[N],f[N];
typedef pair<int,int> PLL;
void add(int a,int b){
	e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
queue<int> q;

int n,m;
void dfs(int x,int minl,int res){
    int flag=1;
    minl=min(minl,a[x]);
    if(minl<mi[x]){
        mi[x]=minl;
        flag=0;
    }
    int maxl=max(f[res],a[x]-minl);
    if(maxl>f[x]){
        f[x]=maxl;
        flag=0;
    }
    if(flag) return;
    for(int i=h[x];i!=-1;i=ne[i]){
        int j=e[i];
        dfs(j,minl,i);
    }
}


int main(){
	
	memset(h,-1,sizeof h);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
    for(int i=0;i<N;i++){
        mi[i]=INF;
    }
	for(int i=1;i<=m;i++){
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		if(z==1){
			add(x,y);
		}
		else{
			add(x,y);
			add(y,x);
		}	
	}
	dfs(1,INF,0);
	cout<<f[n];
}

/*
5 5
4 3 5 6 1
1 2 1
1 4 1
2 3 2
3 5 1
4 5 2
*/
2023/4/2 11:38
加载中...