zoukankan      html  css  js  c++  java
  • ACM2647拓扑排序逆运算

    2647题是对工人排序问题,不是从头到尾排序,而是从尾到头排序;

    代码中用到vector和queue容器,权当练习。

    用广搜进行拓扑排序的逆运算。

     1 #include<iostream>
     2 #include<vector>
     3 #include<queue>
     4 #include<cstring>
     5 using namespace std;
     6 const int maxn=10010;
     7 int main()
     8 {
     9     int n,m;
    10     int sum[maxn];
    11     int out[maxn];
    12     while(cin>>n>>m)
    13     {
    14         int a,b;
    15         vector<int>next[maxn];
    16         queue<int>q;
    17         memset(sum,0,sizeof(sum));
    18         memset(out,0,sizeof(out));
    19         for(int i=0;i<m;i++)
    20         {
    21             cin>>a>>b;
    22             next[b].push_back(a);
    23             out[a]++;
    24         }
    25         for(int i=1;i<=n;i++)
    26         {
    27             if(out[i]==0)
    28             {
    29                 q.push(i);
    30                 sum[i]=888;
    31             }
    32         }
    33         if(q.empty())
    34         {
    35             cout<<-1<<endl;
    36             continue;
    37         }
    38         int cnt=n;
    39         while(!q.empty())
    40         {
    41             int v=q.front();
    42             q.pop();
    43             cnt--;
    44             for(int i=0;i<next[v].size();i++)
    45             {
    46                 out[next[v][i]]--;
    47                 if(out[next[v][i]]==0)
    48                 {
    49                     q.push(next[v][i]);
    50                     sum[next[v][i]]=sum[v]+1;
    51                 }
    52             }
    53         }
    54         if(cnt>0)
    55         {
    56             cout<<-1<<endl;
    57             continue;
    58         }
    59         int ans=0;
    60         for(int i=1;i<=n;i++)
    61         {
    62             ans+=sum[i];
    63         }
    64         cout<<ans<<endl;
    65     }
    66     return 0;
    67 }
    What I don't dare to say is I can't!
  • 相关阅读:
    openmediavault 5.5.23 安装插件失败的解决方案
    qt下载地址
    qt 5.12 增加 mysql驱动
    选基金标准
    关注几个基金
    调仓的几个问题
    要读的书
    ubuntu 20.04 LTS 安装webmin
    set的常见用法
    斜率优化dp([HNOI2008]玩具装箱)
  • 原文地址:https://www.cnblogs.com/sytu/p/3877252.html
Copyright © 2011-2022 走看看