zoukankan      html  css  js  c++  java
  • Perfect Service UVA

    Perfect Service

     UVA - 1218

    题意:安装服务器,使得不是服务器的计算机恰好和一台服务器计算机相连。问最少安多少服务器计算机。

    之前一直不理解第三个转移方程,,今天再看竟然是错的!!可是却过了!!

    下面的是改过的了。

     1 #include <cstdio>
     2 #include <bits/stdc++.h>
     3 using namespace std;
     4 const int maxn=10010;
     5 int d[maxn][3];
     6 int in[maxn];
     7 struct edge{
     8     int v,nex;
     9 }e[maxn<<1];
    10 int head[maxn];
    11 int cnt;
    12 void add(int u,int v){
    13     e[cnt].v=v;
    14     e[cnt].nex=head[u];
    15     head[u]=cnt++;
    16 }
    17 int n;
    18 void dfs(int u,int f){
    19     d[u][2]=maxn;  //!!!不合法
    20     d[u][0]=1;
    21     d[u][1]=0;
    22     for(int i=head[u];i!=-1;i=e[i].nex){
    23         int v=e[i].v;
    24         if(v==f) continue;
    25         dfs(v,u);
    26         d[u][0]+=min(d[v][0],d[v][1]);
    27         d[u][1]+=d[v][2]; //如果maxn过大这里可能会溢出导致错误!
    28     }
    29     for(int i=head[u];i!=-1;i=e[i].nex){
    30         int v=e[i].v;
    31         if(v==f) continue;
    32         d[u][2]=min(d[u][2],d[u][1]-d[v][2]+d[v][0]);
    33     }
    34     return ;
    35 }
    36 int main(){
    37     int u,v;
    38     while(scanf("%d",&n)&&n!=-1){
    39         cnt=0;
    40         memset(head,-1,sizeof(head));
    41         memset(d,0,sizeof(d));
    42         memset(in,0,sizeof(in));
    43         for(int i=1;i<n;i++){
    44             scanf("%d%d",&u,&v);
    45             add(u,v);
    46             add(v,u);
    47         }
    48         dfs(1,0);
    49         printf("%d
    ",min(d[1][0],d[1][2]));
    50         scanf("%d",&u);
    51         if(u==0) continue;
    52         else break;
    53     }
    54 }
    View Code
  • 相关阅读:
    常用FPGA功能块记录
    鸿蒙相关
    微波相关
    Python库大全
    C#环境实现代码的自动生成编译
    STM32相关
    硬件相关
    C# 获取枚举中文注释
    C# 获取自定义特性值
    Asp.Net Core 中 Host 与 WebHost的区别
  • 原文地址:https://www.cnblogs.com/yijiull/p/7414265.html
Copyright © 2011-2022 走看看