zoukankan      html  css  js  c++  java
  • UVA10305 拓扑排序

    网址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=117863#problem/B

    思路分析:裸的拓扑排序,注释在代码中。

    代码:

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstring>
    #include <queue>
    #include <stack>
    #include <vector>
    using namespace std;
    const int maxn=110;
    vector<int> tp[maxn];//用来储存依赖关系
    int b[maxn];//储存依赖度
    queue<int> q,ans;//q队列用来储存入度为0的元素,ans队列用来储存顺序
    int m,n;
    int main()
    {
        int x,y;
        while(scanf("%d%d",&n,&m)&&(n||m))
        {
            memset(b,0,sizeof(b));
            for(int i=1;i<=n;i++)
                tp[i].clear();//初始化!!!
            for(int i=0;i<m;i++)
            {
    
                scanf("%d%d",&x,&y);
                tp[x].push_back(y);//记录依赖关系。
                b[y]++;//记录y元素依赖度
            }
             for(int i=1;i<=n;i++)
                if(!b[i]) q.push(i);//将入度为0的元素压入队列
             while(!q.empty())//开始剪边
             {
                 int t=q.front();
                ans.push(t);
                q.pop();
                for(int i=0;i<tp[t].size();i++)
                {
                  b[tp[t][i]]--;//依赖度--;
                  if(b[tp[t][i]]==0)//入度为0
                  q.push(tp[t][i]);
                }
             }
             while(!ans.empty())
             {
                 if(ans.size()>1) printf("%d ",ans.front());
                 else printf("%d
    ",ans.front());
                 ans.pop();
             }
        }
        return 0;
    }
  • 相关阅读:
    HTML 表单和表格
    HTML 多媒体
    k8s-pod健康检查_探针
    中医穴位小知识
    k8s-yaml定义pod属性说明
    k8s-yaml格式的pod定义文件完整内容
    k8s-redis集群属性简单解释
    ls 的顺序与倒序排列
    K8S kind几种类型
    openssl自签证书
  • 原文地址:https://www.cnblogs.com/xuejianye/p/5529846.html
Copyright © 2011-2022 走看看