zoukankan      html  css  js  c++  java
  • uva 10305

    这是一道纯粹的拓扑排序,刘汝佳的《算法入门经典》p110里面有例题.

     1 #include "stdio.h"
    2 #include "string.h"
    3
    4 int task[102][102];
    5 int vis[102];
    6 int n,m;
    7 int k;
    8 int topo[102];
    9
    10 int dfs(int u);
    11 void toposort(void);
    12
    13 int main()
    14 {
    15 int i;
    16 int a,b;
    17 while(scanf("%d%d",&n,&m)==2)
    18 {
    19 if(!n&&!m)
    20 break;
    21
    22 memset(task,0,sizeof(task));
    23 memset(vis,0,sizeof(vis));
    24
    25 for(i=0;i<m;i++)
    26 {
    27 scanf("%d%d",&a,&b);
    28 task[a][b]=1;
    29 }
    30 k=n-1;
    31
    32 toposort();
    33
    34 for(i=0;i<n-1;i++)
    35 printf("%d ",topo[i]);
    36 printf("%d\n",topo[n-1]);
    37
    38 }
    39
    40 return 0;
    41 }
    42
    43 int dfs(int u)
    44 {
    45 int i;
    46 vis[u]=-1;
    47
    48 for(i=1;i<=n;i++)
    49 {
    50 if(task[u][i])
    51 {
    52 if(vis[i]==-1)
    53 return 0;
    54 else if(!vis[i]&&!dfs(i))
    55 return 0;
    56 }
    57 }
    58
    59 vis[u]=1;
    60 topo[k--]=u;
    61 return 1;
    62 }
    63
    64 void toposort()
    65 {
    66 int i;
    67
    68 for(i=1;i<=n;i++)
    69 {
    70 if(!vis[i])
    71 {
    72 dfs(i);
    73 }
    74 }
    75 }
    76
    77
  • 相关阅读:
    sqlilabs 5
    sqlilabs 1-4
    ipset
    kill命令的使用
    docker 札记
    批量删除数据库表中数据行
    正则表达式调试
    TimescaleDB安装学习
    记一次 Centos7 postgresql v11 安装时序数据库 TimescaleDB
    "知识库"
  • 原文地址:https://www.cnblogs.com/Shirlies/p/2376348.html
Copyright © 2011-2022 走看看