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

      1 //hdu 1285
      2 
      3 #include<stdio.h>
      4 #include<string.h>
      5 #include<stack>
      6 using namespace std;
      7 int map[600][600],n,count[600],seq[600],ff;
      8 int topo()
      9 {
     10     int i,j;
     11     ff=0;
     12     while(ff<n)//当为排完
     13     {
     14         for(i=1;i<=n;i++)//从小开始找
     15         {
     16             if(count[i]==0)//入读为0
     17             {
     18                 count[i]--;
     19                 seq[ff++]=i;
     20                 for(j=1;j<=n;j++)//相关的点减度
     21                     if(map[i][j])
     22                     {
     23                         count[j]--;
     24                     }
     25 
     26                 break;
     27             }
     28         }
     29     }
     30     return 1;
     31 }
     32 int main()
     33 {
     34     int i,j,m;
     35     while(scanf("%d%d",&n,&m)!=EOF)
     36     {
     37         ff=0;
     38         memset(count,0,sizeof(count));
     39         memset(map,0,sizeof(map));
     40         for(i=0;i<m;i++)
     41         {
     42             int x,y;
     43             scanf("%d%d",&x,&y);
     44             if(map[x][y]==0)//重边
     45             {
     46                 map[x][y]=1;
     47                 count[y]++;//入读
     48             }
     49         }
     50         int ans=topo();
     51         if(ans)
     52         {
     53             for(i=0;i<ff;i++)
     54                 if(i==0)printf("%d",seq[i]);
     55                 else printf(" %d",seq[i]);
     56                 printf("
    ");
     57         }
     58     }
     59 }
     60 
     61 
     62 
     63 
     64 /*模版
     65 #include<stdio.h>
     66 #include<string.h>
     67 int map[103][103],n,m;
     68 int c[103];
     69 int dfs(int u)
     70 {
     71     int i,j,l;
     72     c[u]=-1;
     73     for(i=0;i<n;i++)
     74         if(map[u][i])
     75         {
     76             if(c[i]<0)
     77                 return 0;
     78             else if(!c[i]&&!dfs(i))
     79                 return 0;
     80         }
     81     c[u]=1;
     82     return 1;
     83 }
     84 int topo()
     85 {
     86     int i,j;
     87     memset(c,0,sizeof(c));
     88     for(i=0;i<n;i++)
     89     {
     90         if(!c[i])
     91             if(!dfs(i))
     92                 return 0;
     93     }
     94     return 1;
     95 }
     96 int main()
     97 {
     98     int i,j,l;
     99     while(scanf("%d%d",&n,&m)!=EOF)
    100     {    
    101         memset(map,0,sizeof(map));
    102         if(!n)
    103             break;
    104         for(i=0;i<m;i++)
    105         {
    106             int a,b;
    107             scanf("%d%d",&a,&b);
    108             map[a][b]=1;
    109         }
    110         if(!topo())
    111             printf("NO
    ");
    112         else printf("YES
    ");
    113     }
    114 }*/
  • 相关阅读:
    加密算法整理
    NSURLConnection类说明
    ios5 中文键盘高度变高覆盖现有ui问题的解决方案(获取键盘高度的方法)
    "ld: library not found for l...." 问题的解决
    ios5 自定义导航条问题
    objectivec 语言知识点
    JSON
    [转]XCode中修改缺省公司名称/开发人员名称
    [转]iPhone开源项目汇总
    清除SQL 数据库日志 欧阳锋
  • 原文地址:https://www.cnblogs.com/sweat123/p/4495877.html
Copyright © 2011-2022 走看看