码迷,mamicode.com
首页 > 其他好文 > 详细

P2458 [SDOI2006]保安站岗

时间:2019-10-05 20:47:57      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:++   mes   png   pre   using   pac   http   dfs   com   

技术图片

 

 


没注意放置时还有权值还行


#include<bits/stdc++.h>
using namespace std;
int n,val[150000],m,ne,a,b,head[150000],f[150000][3];
struct node{int nxt,to;}eg[150000];
void adde(int u,int v){eg[++ne].nxt=head[u];eg[ne].to=v;head[u]=ne;}
void dfs(int u,int fa)
{
    int sum=0;
    f[u][0]=val[u];
    for(int i=head[u];i;i=eg[i].nxt)
    {
        int v=eg[i].to;
        if(v==fa)continue;
        dfs(v,u);
        f[u][0]+=min(min(f[v][1],f[v][0]),f[v][2]);
        sum+=(min(f[v][2],f[v][0]));
    }
    f[u][1]=sum;f[u][2]=0x3f3f3f3f;
    for(int i=head[u];i;i=eg[i].nxt)
    {
        int v=eg[i].to;
        if(v==fa)continue;
        f[u][2]=min(f[u][2],sum-min(f[v][2],f[v][0])+f[v][0]);
    }
    
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a;
        cin>>val[a]>>m;
        while(m--)
        {
            cin>>b;
            adde(a,b);adde(b,a);
        }
    }
    dfs(1,0);
    cout<<min(f[1][0],f[1][2]);
}

 

P2458 [SDOI2006]保安站岗

标签:++   mes   png   pre   using   pac   http   dfs   com   

原文地址:https://www.cnblogs.com/SFWR-YOU/p/11625530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!