1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int MAXN=1e5+5,INF=1e9+5; int n,p,a[MAXN],f[MAXN],m[MAXN]; vector<int> v[MAXN]; void dfs(int x,int minn,int last){ int flag=1; minn=min(a[x],minn); if(m[x]>minn) m[x]=minn,flag=0; int maxx=max(f[last],a[x]-minn); if(f[x]<maxx) f[x]=maxx,flag=0; if(flag) return; for(int i=0;i<v[x].size();i++) dfs(v[x][i],minn,x); } int main(){ scanf("%d%d",&n,&p); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); m[i]=INF; } for(int i=1;i<=p;i++){ int x,y,z; scanf("%d%d%d",&x,&y,&z); v[x].push_back(y); if(z==2) v[y].push_back(x); } dfs(1,INF,0); printf("%d",f[n]); }
- 1
信息
- ID
- 126
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- 递交数
- 11
- 已通过
- 8
- 上传者