zoukankan      html  css  js  c++  java
  • 1596: [Usaco2008 Jan]电话网络

    Description

    Farmer John决定为他的所有奶牛都配备手机,以此鼓励她们互相交流。不过,为此FJ必须在奶牛们居住的N(1 <= 
    N <= 10,000)块草地中选一些建上无线电通讯塔,来保证任意两块草地间都存在手机信号。所有的N块草地按1..N 
    顺次编号。 所有草地中只有N-1对是相邻的,不过对任意两块草地A和B(1 <= A <= N; 1 <= B <= N; A != B),都
    可以找到一个以A开头以B结尾的草地序列,并且序列中相邻的编号所代表的草地相邻。无线电通讯塔只能建在草地
    上,一座塔的服务范围为它所在的那块草地,以及与那块草地相邻的所有草地。 请你帮FJ计算一下,为了建立能
    覆盖到所有草地的通信系统,他最少要建多少座无线电通讯塔。

    Input

    * 第1行: 1个整数,N
    * 第2..N行: 每行为2个用空格隔开的整数A、B,为两块相邻草地的编号

    Output

    * 第1行: 输出1个整数,即FJ最少建立无线电通讯塔的数目

    Sample Input

    5
    1 3
    5 2
    4 3
    3 5
    输入说明:
    Farmer John的农场中有5块草地:草地1和草地3相邻,草地5和草地2、草地
    4和草地3,草地3和草地5也是如此。更形象一些,草地间的位置关系大体如下:
    (或是其他类似的形状)
    4 2
    | |
    1--3--5

    Sample Output

    2
    输出说明:
    FJ可以选择在草地2和草地3,或是草地3和草地5上建通讯塔。
     

     
    贪心,如果这一点的儿子都没有被选, 并且它父亲没被选,就选它父亲
     

     
    #include <iostream>
    #include <cstdio>
    using namespace std;
    #define N 10005
    int n;
    struct edge{
        int nxt, to;
    }ed[N*2];
    int head[N], cnt;
    inline int add(int x, int y){
        ed[++cnt] = (edge){head[x], y};
        head[x] = cnt;
    }
    int ans = 0;
    bool mark[N];
    void dfs(int x, int fa)
    {
        bool fl = 0; 
        for (register int i = head[x] ; i ; i = ed[i].nxt){
            int to = ed[i].to;
            if (to == fa) continue;
            dfs(to, x);
            if (mark[to]) fl = 1;
        }
        if (fl == 0 and !mark[x] and !mark[fa]) ans++, mark[fa] = 1;
    }
    int main()
    {
        scanf("%d", &n);
        for (register int i = 1 ; i < n ; i ++)
        {
            int x, y;scanf("%d%d", &x, &y);
            add(x, y), add(y, x);
        }
        dfs(1, 0);
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    bzoj 1588: [HNOI2002]营业额统计 treap
    Codeforces Round #135 (Div. 2) E. Parking Lot 线段数区间合并
    cdoj 851 方老师与素数 bfs
    hdu 5150 Sum Sum Sum 水
    Codeforces Round #376 (Div. 2) F. Video Cards 数学,前缀和
    POJ 1984 Navigation Nightmare 带全并查集
    POJ 1655 Balancing Act 树的重心
    POJ 3140 Contestants Division 树形DP
    HDU 3586 Information Disturbing 树形DP+二分
    HDU 1561 The more, The Better 树形DP
  • 原文地址:https://www.cnblogs.com/BriMon/p/9314798.html
Copyright © 2011-2022 走看看