zoukankan      html  css  js  c++  java
  • 最优贸易

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 const int maxn=1e5+7;
     5 const int maxm=5e5+7;
     6 const int inf=0x7f7f7f7f;
     7 int n,m,num;
     8 int head[maxn],val[maxn],f[maxn],mi[maxn];
     9 int read(){
    10     int f=1;int x=0;char s=getchar();
    11     while(s<'0'||s>'9') {if(s=='-') f=-1;s=getchar();}
    12     while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
    13     x*=f;
    14     return x;
    15 }
    16 struct Edge{
    17     int next,to;
    18 }edge[maxm];
    19 void add(int from,int to){
    20     edge[++num].next=head[from];
    21     edge[num].to=to;
    22     head[from]=num;
    23 }
    24 void dfs(int x,int pre,int minn){
    25     bool flag=1;
    26     minn=min(minn,val[x]);
    27     if(mi[x]>minn){mi[x]=minn;flag=false;}
    28     int maxx=max(f[pre],val[x]-minn);
    29     if(f[x]<maxx){f[x]=maxx;flag=false;}
    30     if(flag==true) return;
    31     for(int i=head[x];i;i=edge[i].next){
    32         int v=edge[i].to;
    33         dfs(v,x,minn);
    34     }
    35 }
    36 int main(){
    37     cin>>n>>m;
    38     for(int i=1;i<=n;i++) cin>>val[i];
    39     for(int i=1;i<=m;i++){
    40         int x,y,z;x=read();y=read();z=read();
    41         if(z==1) add(x,y);
    42         if(z==2) {add(x,y);add(y,x);}
    43     }
    44     for(int i=1;i<=n;i++) mi[i]=inf;
    45     dfs(1,0,inf);
    46     cout<<f[n]<<endl;
    47     return 0;
    48 } 
  • 相关阅读:
    线程池。
    等待唤醒机制。
    第一册:lesson 131.
    线程同步机制。
    第一册: lesson 129。
    线程实现方式。
    第一册:lesson 125.
    第一册:Lesson 123.
    黄渤的谈话。
    K3 KFO 手册
  • 原文地址:https://www.cnblogs.com/lcan/p/9570929.html
Copyright © 2011-2022 走看看