hdu 4340 Capturing a country

来源:互联网 发布:智能康复知多少 编辑:程序博客网 时间:2024/06/04 19:37

连这种题都wa,这几天是肿么了!!!!

#include<iostream>  #include<vector> #include<algorithm>  #include<cstdio>  #include<queue>  #include<stack>  #include<string>  #include<map>  #include<set>  #include<cmath>  #include<cassert>  #include<cstring>  #include<iomanip>  using namespace std;  #ifdef _WIN32  #define i64 __int64  #define out64 "%I64d\n"  #define in64 "%I64d"  #else  #define i64 long long  #define out64 "%lld\n"  #define in64 "%lld"  #endif  /************ for topcoder by zz1215 *******************/  #define FOR(i,a,b)      for( int i = (a) ; i <= (b) ; i ++)  #define FFF(i,a)        for( int i = 0 ; i < (a) ; i ++)  #define FFD(i,a,b)      for( int i = (a) ; i >= (b) ; i --)  #define S64(a)          scanf(in64,&a)  #define SS(a)           scanf("%d",&a)  #define LL(a)           ((a)<<1)  #define RR(a)           (((a)<<1)+1)  #define pb              push_back  #define CL(Q)           while(!Q.empty())Q.pop()  #define MM(name,what)   memset(name,what,sizeof(name))  #define MAX(a,b)        ((a)>(b)?(a):(b))  #define MIN(a,b)        ((a)<(b)?(a):(b))  #define read            freopen("out.txt","r",stdin)  #define write           freopen("zz.txt","w",stdout)    const int inf = 0x3f3f3f3f;  const i64 inf64 = 0x3f3f3f3f3f3f3f3fLL;  const double oo = 10e9;  const double eps = 10e-9;  const double pi = acos(-1.0);  const int maxn = 222;  int n;int a[maxn];int b[maxn];vector<int>g[maxn];int dpy[2][maxn];int dpn[2][maxn];int f[maxn];bool vis[maxn];void df1(int now){vis[now]=true;int to;for(int i=0;i<g[now].size();i++){to = g[now][i];if(!vis[to]){f[to]=now;df1(to);}}return ;}void df2(int now){int to;int sa=0;int sb=0;int ta=inf;int tb=inf;for(int i=0;i<g[now].size();i++){to = g[now][i];if(to!=f[now]){df2(to);sa+=dpy[0][to];sb+=dpy[1][to];ta=MIN(ta,dpn[0][to]-dpy[0][to]);tb=MIN(tb,dpn[1][to]-dpy[1][to]);}}dpn[0][now]=a[now]+sa;dpn[1][now]=b[now]+sb;dpn[0][now]=MIN(dpn[0][now],ta+sa+a[now]/2);dpn[1][now]=MIN(dpn[1][now],tb+sb+b[now]/2);dpy[0][now]=MIN(a[now]/2+sa,dpn[1][now]);dpy[1][now]=MIN(dpn[0][now],b[now]/2+sb);return ;}int start(){memset(vis,false,sizeof(vis));memset(f,-1,sizeof(f));df1(1);df2(1);return MIN(dpn[0][1],dpn[1][1]);}int main(){int now,to;while(cin>>n){for(int i=1;i<=n;i++){g[i].clear();}for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n;i++){cin>>b[i];}for(int i=1;i<=n-1;i++){cin>>now>>to;g[now].pb(to);g[to].pb(now);}cout<<start()<<endl;}return 0;}


原创粉丝点击