zoukankan      html  css  js  c++  java
  • Uva 10305 Ordering Tasks

    题目为简单的拓扑排序。

    第一行输入n,m。n为数字的数目,m为下边有几行数字(i,j)之间的关系。

    数字间的关系,j要排在i的后边。最终排成一个序列。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<queue>
     5 using namespace std;
     6 queue<int>task;
     7 int indegree[102],Map[102][102];
     8 void topo(int taskNum){
     9     int outNum;
    10     for(int i = 1;i <= taskNum;i++){
    11         if(indegree[i] == 0){
    12             task.push(i);
    13         }
    14     }
    15     while(!task.empty()){
    16         outNum = task.front();
    17         printf("%d",outNum);
    18         task.pop();
    19         for(int i = 1;i <= taskNum;i++){//遍历从outNum出发的每一条边,入度减1
    20             if(Map[outNum][i] != 0){
    21                 indegree[i]--;
    22                 if(indegree[i] == 0)task.push(i);
    23             }
    24         }
    25         if(!task.empty())cout<<" ";
    26     }
    27     cout<<endl;
    28 }
    29 int main()
    30 {
    31     #ifndef ONLINE_JUDGE
    32     freopen("d:\acm.txt","r",stdin);
    33     #endif // ONLINE_JUDGE
    34     int taskNum,relation;
    35     while(cin>>taskNum>>relation,taskNum||relation){
    36 
    37         memset(Map,0,sizeof(Map));
    38         memset(indegree,0,sizeof(indegree));
    39         for(int j = 0;j < relation;j++){
    40             int x,y;
    41             cin>>x>>y;
    42             Map[x][y] = 1;
    43             indegree[y] ++;
    44         }
    45         topo(taskNum);
    46     }
    47     return 0;
    48 }

     总结:代码写的不够清晰,容易产生bug

    Donghua University
  • 相关阅读:
    SQL性能--left join和inner join的运行速度与效率
    20分钟搭建selenium+python+pydev+eclipse环境
    python 模拟双色球输出
    python 装饰器
    leetcode python丑数
    leetcode python找不同
    TCP和UDP的区别以及使用python服务端客户端简单编程
    python 上台阶
    leetcode python快乐数
    mysql 两例习题
  • 原文地址:https://www.cnblogs.com/ohxiaobai/p/4097843.html
Copyright © 2011-2022 走看看