zoukankan      html  css  js  c++  java
  • 【拓扑排序】确定比赛名次

    HDU P1285 确定比赛名次

    拓扑排序裸题qwq

    注意:入度为一的点删掉之后,它的入度要更新为-1

    这个题刷出了我人生中第一次PE 可还行qaq

    我搜索PE是输出格式与标准输出不符, 结果发现语言选成G++ orz

    想起来《%你抄》 “原来CE,只因选错语言” 可我PE,也是选错语言啊啊啊啊啊QAQ

    代码君qwq

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 using namespace std;
     5 const int sz = sz;
     6 int n, m;
     7 int plat[sz][sz], in[sz], ans[sz];
     8 int main() {
     9     while(~scanf("%d%d", &n, &m)) {
    10         memset(plat, 0, sizeof(plat));
    11         memset(in, 0, sizeof(in)); 
    12         int cnt = 0, flag = 0, x, y;
    13         for(int i = 1; i <= m; i++) {
    14             scanf("%d%d", &x, &y);
    15             if(!plat[x][y]) {
    16                 plat[x][y] = 1;
    17                 in[y]++;
    18             }
    19         }
    20         while(cnt < n) {
    21             for(int i = 1; i <= n; i++) {
    22                 if(in[i]==0) {
    23                     in[i] = -1;
    24                     ans[++cnt] = i;
    25                     flag = i;
    26                     break;
    27                 }
    28             }
    29             for(int i = 1; i <= n; i++) {
    30                 if(plat[flag][i]) in[i]--;
    31             }
    32         }
    33         for(int i = 1; i < n; i++) 
    34             printf("%d ", ans[i]);
    35         printf("%d
    ", ans[n]);
    36     }
    37     return 0;
    38 }

     这是我写的邻接表存图的拓扑排序,自认为没有错误但交上去就ce

    原因如下:(我很懵逼qaq

    HDU你是魔鬼吗???

     1 #include<queue>
     2 #include<cstdio>
     3 #include<iostream>
     4 using namespace std;
     5 const int sz = 505;
     6 struct edge {
     7     int nxt, to;
     8 }e[sz<<1];
     9 priority_queue<int, vector<int>, greater<int> >q;
    10 int n, m, x, y, num = 0, cnt = 0, in[sz], ans[sz], head[sz];
    11 void add(int from, int to) {
    12     in[to]++;
    13     e[++num].nxt = head[from];
    14     e[num].to = to;
    15     head[from] = num;
    16 }
    17 int main() {
    18     while(~scanf("%d%d", &n, &m)) {
    19         for(int i = 1; i <= m; i++) {
    20             scanf("%d%d", &x, &y);
    21             add(x, y);
    22         }
    23         for(int i = 1; i <= n; i++) {
    24             if(!in[i]) q.push(i);
    25         }
    26         while(!q.empty()) {
    27             int u = q.top();
    28             q.pop();
    29             ans[++cnt] = u;
    30             for(int i = head[u]; i; i = e[i].nxt) {
    31                 int v = e[i].to;
    32                 in[v]--;
    33                 if(!in[v]) q.push(v);
    34             }
    35         }
    36         for(int i = 1; i < n; i++) 
    37             printf("%d ", ans[i]);
    38         printf("%d
    ", ans[n]);
    39     }
    40     return 0;
    41 }

    在看拓扑排序qaq实在是找不到用邻接表存图且不用指针的(美妙)代码了

    难受香菇(想吃香菇馅的水饺啦啦啦啦)

    总之岁月漫长,然而值得期待。
  • 相关阅读:
    1058 A+B in Hogwarts (20)
    1046 Shortest Distance (20)
    1061 Dating (20)
    1041 Be Unique (20)
    1015 Reversible Primes (20)(20 分)
    pat 1027 Colors in Mars (20)
    PAT 1008 Elevator (20)
    操作系统 死锁
    Ajax的get方式传值 避免& 与= 号
    让IE浏览器支持CSS3表现
  • 原文地址:https://www.cnblogs.com/Hwjia/p/9789618.html
Copyright © 2011-2022 走看看