zoukankan      html  css  js  c++  java
  • PAT A1146 Topological Order (25分)

    这是PAT图论中很少见拓扑排序问题,基本上不考,思路也偏向与验证排序正确与否,验证思路为:
    在输入边的时候,记录所有顶点的单向邻接点,并且记录所有点的入度。查询时,每输入一个点,就判断其入度是否为0,不为0,则不是拓扑排序,然后将此点指向的所有点的入度减一,查询至结束,输出即可

    #include<cstdio>
    #include<vector>
    #include<algorithm>
    using namespace std;
    const int N = 1010;
    const int M = 10010;
    const int K = 110;
    vector<int>G[N];
    int inDegree[N];
    bool istopol[K];
    
    int main(){
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i = 0 ; i < m ; i++){
            int v,u;
            scanf("%d%d",&v,&u);
            G[v].push_back(u);//从v到u
            inDegree[u]++;//u的入度+1
        }
        
        int k;
        scanf("%d",&k);
        fill(istopol,istopol+k,true);//先设置为全对
        
        int tempinDegree[n+1];//0不用
        int order[n];
        
        for(int i = 0;i<k;i++){//k次验证
            for(int j = 1;j<=n;j++){
                tempinDegree[j] = inDegree[j];//复制入度
            }
            for(int j = 0;j < n;j++){
                scanf("%d",order+j);
            }
            for(int j = 0;j< n;j++){
                int v = order[j];
                if(tempinDegree[v]!=0){
                    istopol[i] =false;
                    break;
                }else{
                    for(int gt = 0;gt<G[v].size();gt++){
                        tempinDegree[G[v][gt]]--;//所有连接点入度-1
                    }
                }  
            }
        }
        
        
        //print
        bool flag = true;
        for(int i = 0;i<k;i++){
            if(istopol[i]==false){
                if(flag==false) printf(" ");
                printf("%d",i);
                flag = false;
            }
        }
    }
    
  • 相关阅读:
    使用线程新建WPF窗体(公用进度条窗体)
    WPF--模板选择
    WPF命令(Command)介绍、命令和数据绑定集成应用
    WPF 员工卡条形码
    WPF入门教程系列(二) 深入剖析WPF Binding的使用方法
    R语言——实验5-聚类分析
    R语言——实验5-聚类分析
    Java学习---流与文件
    Java学习---流与文件
    Java学习---异常处理
  • 原文地址:https://www.cnblogs.com/shuibeng/p/13576840.html
Copyright © 2011-2022 走看看