hdu3342--Legal or Not 拓扑排序

本文介绍了一种用于解决有向无环图拓扑排序问题的算法,并通过实例展示了其在实际问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

View Code
 1 //Accepted    3342    31MS    260K    1002 B    G++
 2 #include <stdio.h>
 3 #include <string.h>
 4 #define M 110
 5 int g[M][M];
 6 int q[M];
 7 bool useif[M];
 8 int n,m;
 9 int topo()
10 {
11     int i,j,k,t;
12     memset(useif,0,sizeof(useif));
13     t = 0;
14     for(i=1;i<=n;i++)
15     {
16         bool flag = true; 
17         for(j=1;j<=n;j++)
18         {
19             if(q[j] == 0 && useif[j] == 0 )
20             {
21                   useif[j] = 1;
22                   t ++;
23                   for(k = 1; k <= n; ++k)
24                         if(g[j][k] == 1)
25                              q[k] --;
26                   flag = false;
27                   break;                                   
28             }
29         }
30          if(flag) break;
31     }
32     if(t == n)
33         return 1;
34     else
35         return 0;
36 }
37 int main()
38 {
39     int a,b,i;
40     while(scanf("%d%d",&n,&m)!=EOF &&  n + m )
41     {
42         memset(g,0,sizeof(g));
43         memset(q,0,sizeof(q));
44         for(i=1;i<=m;i++)
45         {
46             scanf("%d%d",&a,&b);
47             a++;
48             b++;
49             if(g[a][b]==0) q[b]++;
50             g[a][b] = 1;    
51         }
52         if (topo())
53             printf("YES\n");
54         else
55             printf("NO\n");
56     }
57     return 0;
58 }

转载于:https://www.cnblogs.com/asen32/archive/2012/09/07/2675371.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值