栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 3659 Cell Phone Network

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 3659 Cell Phone Network

#include<iostream>#include<cmath>#include<cstring>#include<cstdio>using namespace std;#define MAXN 11000struct node{    int num;    node *next;};node *graph[MAXN],memo[2*MAXN];int top=0,n;int Q[MAXN],father[MAXN];int dp[MAXN][3];void add(int x,int y){    node *p=&memo[top++];    p->num=y; p->next=graph[x]; graph[x]=p;    p=&memo[top++];    p->num=x; p->next=graph[y]; graph[y]=p;}void solve(){    int left,right,u,v,i;    Q[left=right=1]=1;    father[1]=0;    while(left<=right)    {        u=Q[left++];        for(node *p=graph[u];p;p=p->next) if(p->num!=father[u])     Q[++right]=p->num,father[p->num]=u;    }    int s1,s2,s0,MIN;    for(i=right;i>0;i--)    {        s0=1; s1=s2=0; MIN=MAXN;        u=Q[i];        for(node *p=graph[u];p;p=p->next)        if(p->num!=father[u])        { v=p->num; s0+=min(dp[v][0],min(dp[v][1],dp[v][2])); s1+=min(dp[v][0],dp[v][2]); s2+=min(dp[v][0],dp[v][2]); MIN=min(MIN,dp[v][0]-dp[v][2]);        }        if(MIN>0) s2+=MIN;        dp[u][0]=s0; dp[u][1]=s1; dp[u][2]=s2;    }    printf("%dn",min(dp[1][0],dp[1][2]));}int main(){    memset(dp,0,sizeof(dp));    memset(graph,0,sizeof(graph));    int x,y;    scanf("%d",&n);    for(int i=1;i<n;i++)    {        scanf("%d%d",&x,&y);        add(x,y);    }    solve();    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374238.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号