暴力求助

P1073 [NOIP2009 提高组] 最优贸易

化简后 ```cpp #include<bits/stdc++.h> #define I(e) for(int i=1;i<=e;i++) using namespace std; vector<int>a[100010]; int V[100010]; int c[100010]; int n,m; int ans=0; void dfs(int place,int mi,int an){ //cout<<place<<" "<<mi<<" "<<an<<endl; if(V[place]>=2){ return ; } V[place]++; int _min=min(c[place],mi); int _ans=max(an,c[place]-_min); ans=max(ans,_ans); for(int i=0;i<a[place].size();i++){ dfs(a[place][i],_min,_ans); } } int main(){ //freopen("P1073_2.in","r",stdin); cin>>n>>m; I(n){ scanf("%d",&c[i]); } I(n){ int x,y,z; scanf("%d%d%d",&x,&y,&z); a[x].push_back(y); if(z==2){ a[y].push_back(x); } } dfs(1,0xfffffff,0); cout<<ans; return 0; } ```
by liyixuan5 @ 2022-04-28 19:19:53


|