zoukankan      html  css  js  c++  java
  • Problem: 八中厕所的门

    Problem: 八中厕所的门

    Time Limit: 10 Sec Memory Limit: 128 MB

    Description

    八中一共有被用M条双向道路连接的N个厕所(1<=N,M<=3000)。为了关闭整个八中,Headmaster Wen 计划每一次关闭掉一个厕所。当一个厕所被关闭了,所有的连接到这个厕所的道路都会被关闭,而且再也不能够被使用。ZY现在正感兴趣于知道在每一个时间(这里的“时间”指在每一次关闭厕所之前的时间)时他的八中是否是“全连通的”——也就是说从任意的一个开着的厕所开始,能够到达另外的一个厕所。注意自从某一个时间之后,可能整个八中都开始不会是“全连通的”。

    Input

    • 第一行给出数字N,M,代表有N个厕所,M条边,1<=N,M<=3000
    • 接下来N行来用描述厕所之间相连的情况
    • 接下来N行,每行给出一个数字,代表关闭了哪个厕所的门

    Output

    • 输出N行,每行输出"YES"或"NO".
    • 第一行输出最开始时整个八中是不是连通的
    • 后面的N-1用来描述关闭某个厕所的门后,八中是不是连通的。

    Sample Input

    4 3
    1 2
    2 3
    3 4
    3
    4
    1
    2

    Sample Output

    YES
    NO
    YES
    YES

    代码如下

    #include<stdio.h>
    #include<string.h>
    int n,m;
    int tot,ans,sum;
    int pre[6050],now[6050],son[6050],mp[3050],off[3050];
    void put(int a,int b) {
        pre[++sum]=now[a];
        now[a]=sum;
        son[sum]=b;
    }
    int dfs(int u) {
        int s=0;
        mp[u]=1;
        for(int i=now[u]; i; i=pre[i]) {
            int k=son[i];
            if(!mp[k]&&!off[k]) {
                s+=dfs(k);
            }
        }
        return s+1;
    }
    int main() {
        scanf("%d %d",&n,&m);
        for(int i=1,x,y; i<=m; i++) {
            scanf("%d%d",&x,&y);
            put(x,y),put(y,x);
        }
        ans=dfs(1);
        if(ans==n)
            printf("YES
    ");
        else printf("NO
    ");
        for(int i=1,take; i<=n-1; i++) {
            memset(mp,0,sizeof(mp));
            scanf("%d",&take);
            off[take]=1;
            for(int j=1; j<=n; j++) {
                if(!off[j]) {
                    tot=j;
                    break;
                }
            }
            ans=dfs(tot);
            if(ans==n-i)printf("YES
    ");
            else printf("NO
    ");
        }
    }
    
  • 相关阅读:
    Android 学习笔记5程序开发模式&拨号器&短信发送器小例程
    Android学习笔记6日志输出&单元测试
    utkernel 移植时调试方法
    在eclipse中查看Android SDK源代码
    (转载)怎样改进数据库的查询性能?
    asp.net 编程模型
    数据回传
    在博客园记录我的成长
    LeetCode14.最长公共前缀
    LeetCode206.反转链表
  • 原文地址:https://www.cnblogs.com/ZhaoChongyan/p/11740410.html
Copyright © 2011-2022 走看看