• cdoj 排名表 拓扑排序 排名输出 贪心


    //并不理解为什么需要反向建图,由大到小倒序确定排名。感觉正向由小到大和反向由大到小应该是一样的。

    解:拓排+贪心,反向建边,先找排名靠后的(now,不知道为什么)

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cmath>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<cstdlib>
     7 #include<queue>
     8 #include<vector>
     9 #include<map>
    10 #include<stack>
    11 #include<string>
    12 
    13 using namespace std;
    14 
    15 vector <int> G[207];
    16 int T,n,m;
    17 int a[207],b[207];
    18 int d[207];
    19 int now;
    20 
    21 int main(){
    22     scanf("%d",&T);
    23     for (int cas=0;cas<T;cas++){
    24             scanf("%d%d",&n,&m);
    25             for (int i=1;i<=n;i++){
    26                     G[i].clear();
    27                     d[i]=0;
    28             }
    29             for (int i=0;i<m;i++){
    30                     int x,y;
    31                     scanf("%d%d",&x,&y);
    32                     d[x]++;
    33                     G[y].push_back(x);
    34             }
    35             now=n;
    36             for (int i=0;i<n;i++){
    37                     for (int j=n;j>=1;j--){
    38                             if (d[j]==0){
    39                                     d[j]=-1;
    40                                     a[now--]=j;
    41                                     int sz=G[j].size();
    42                                     for (int k=0;k<sz;k++){
    43                                             d[G[j][k]]--;
    44                                     }
    45                                     break;
    46                             }
    47                     }
    48             }
    49             if (now!=0){
    50                     printf("-1
    ");
    51                     continue;
    52             }
    53             for (int i=1;i<=n;i++){
    54                     b[a[i]]=i;
    55             }
    56             for (int i=1;i<=n;i++){
    57                     printf("%d%c",b[i],i==n?'
    ':' ');
    58             }
    59     }
    60     return 0;
    61 }
    62 /*
    63 1
    64 6 5
    65 6 1
    66 1 5
    67 4 5
    68 2 4
    69 3 4
    70 
    71 5
    72 4 0
    73 4 1
    74 1 1
    75 4 2
    76 1 2
    77 2 1
    78 4 1
    79 2 1
    80 4 1
    81 3 2
    82 */
    View Code
  • 相关阅读:
    C# 实现 JAVA AES加密解密(转他人)
    转 Java、C#双语版配套AES加解密示例
    开发工具资料
    WebApi返回Json格式
    【转】NuGet.org 无法访问的解决方法
    使用Senparc.Weixin.WxOpen开发高可用的微信小程序
    WebApi资料
    WinForm资料
    Winform开发框架之终极应用
    Winform开发中另一种样式的OutLookBar工具条
  • 原文地址:https://www.cnblogs.com/baby-mouse/p/4540995.html
Copyright © 2020-2023  润新知