zoukankan      html  css  js  c++  java
  • 2833 奇怪的梦境

    2833 奇怪的梦境

     

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 黄金 Gold
     
     
     
    题目描述 Description

    Aiden陷入了一个奇怪的梦境:他被困在一个小房子中,墙上有很多按钮,还有一个屏幕,上面显示了一些信息。屏幕上说,要将所有按钮都按下才能出去,而又给出了一些信息,说明了某个按钮只能在另一个按钮按下之后才能按下,而没有被提及的按钮则可以在任何时候按下。可是Aiden发现屏幕上所给信息似乎有矛盾,请你来帮忙判断。

    输入描述 Input Description

    第一行,两个数N,M,表示有编号为1...N这N个按钮,屏幕上有M条信息。

    接下来的M行,每行两个数ai,bi,表示bi按钮要在ai之后按下。所给信息可能有重复,保证ai≠bi。

    输出描述 Output Description

    若按钮能全部按下,则输出“o(∩_∩)o”。

    若不能,第一行输出“T_T”,第二行输出因信息有矛盾而无法确认按下顺序的按钮的个数。输出不包括引号。

    样例输入 Sample Input

    3 3

    1 2

    2 3

    3 2

    样例输出 Sample Output

    T_T

    2

    数据范围及提示 Data Size & Hint

    对于30%的数据,保证0<N≤100。

    对于50%的数据,保证0<N≤2000。

    对于70%的数据,保证0<N≤5000。

    对于100%的数据,保证0<N≤10000,0<M≤2.5N。

    分类标签 Tags 点此展开 

     
     
    分析:
    拓扑排序 模板题
    代码:
    #include<cstdio>
    #include<iostream>
    #include<stack>
    using namespace std;
    #define N 10100
    int vis[N],du[N],e[N][N],n,m;
    stack<int>s;
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1,x,y;i<=m;i++){
            scanf("%d%d",&x,&y);
            e[x][y]=1;
            du[y]++;//统计入度 
        }
        for(int i=1;i<=n;i++){
            if(!du[i]){
                s.push(i);
                vis[i]=1;
            }
        }
        while(!s.empty()){//栈空,要么全部搜完,要么有环。 
            int p=s.top();
            s.pop();
            for(int i=1;i<=n;i++){
                if(e[p][i]){//删边 
                    du[i]--;
                }
            }
            for(int i=1;i<=n;i++){
                if(!du[i]&&!vis[i]){//注意访问标记 
                    s.push(i);//把点入队 
                    vis[i]=1;
                }
            }
            
        }
        int flag=1,ans=0;
        for(int i=1;i<=n;i++) 
          if(!vis[i]) flag=0,ans++;//清点有环情况下,有几个点没有搜到 
        if(flag) printf("o(∩_∩)o
    ");//无环 
        else printf("T_T
    %d
    ",ans);    
        return 0;
    } 
  • 相关阅读:
    元组tuple
    列表list
    day11---闭包函数
    day10函数对象,嵌套,名称空间,作用域
    day10函数对象,嵌套,名称空间,作用域
    day--函数
    day8--文件管理2
    day ---7,文件管理
    day7,文件编码
    day6---字典,集合内置方法
  • 原文地址:https://www.cnblogs.com/shenben/p/5560056.html
Copyright © 2011-2022 走看看