hdu3342Legal or Not
来源:互联网 发布:淘宝如何发布话费充值 编辑:程序博客网 时间:2024/05/16 23:35
1.题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=3342
2.思路:
这到题目简单是来说就是判断是否存在拓扑排序,也可以说判断是否存在环。有多种方法(比如用floyd,用dfs判断是否存在环),还有就是最原始的拓扑算法,具体见代码。
3.参考代码:
#include <stdio.h>#include <string.h>int edge[1100][1100]; ///图的邻接矩阵int rudu[1100]; ///记录入度数int tuopu(int n){ ///拓扑算法int i,j,k; ///循环变量int cnt=0; ///统计入度的个数for(i=0;i<n;i++){for(j=0;j<n;j++){if(!rudu[j]) ///如果j没有入度,则入度数减一{rudu[j]--;cnt++; ///个数加一if(cnt==n) ///如果两者相等,说明存在环return cnt;for(k=0;k<n;k++) ///遍历所有的点{if(edge[j][k]) ///相关联的点,入度数减一rudu[k]--;}}}}return cnt; ///返回个数}int main(){int i,x,y,n,m;while(scanf("%d %d",&n,&m) && (n || m)){memset(edge,0,sizeof(edge)); ///初始化memset(rudu,0,sizeof(rudu)); ///初始化for(i=0;i<m;i++){scanf("%d %d",&x,&y);if(edge[x][y]!=1) ///考虑是否重边的情况rudu[y]++;edge[x][y]=1;}if(tuopu(n)==n) ///如果相等说明不能形成环,否则可以puts("YES");elseputs("NO");}return 0;}
- hdu3342Legal or Not
- hdu3342Legal or Not
- hdu3342Legal or Not(拓扑排序)
- HDU3342Legal or Not(拓扑判断是否有环)
- To Annotate or Not?
- Annotations:hype or not?
- Constructor or not constructor?
- 加班 or Not?
- lucky or not
- 2134 Queen Or Not
- 裸辞Or Not?
- HOJ2838Nim or not Nim?
- Legal or Not
- Maven: good or not
- To be or not
- Legal or Not HDU
- TOJ3650 Legal or Not
- A. Friends or Not
- keepalive
- java面试题系列3
- Hibernate中的get()和load()
- 初学python 用shelve 实现的一个contacts
- Jbpm4.4会签
- hdu3342Legal or Not
- JSON.stringify 语法实例讲解
- Android 开发asset 文件夹和raw 文件夹的区别
- 不要通过html中font标签的size属性来更改文字的精确大小
- rqnoj-122-种菊
- Linux用户管理
- android string.xml 空格问题
- POJ1579:Function Run Fun
- APUE读书笔记-第9章 进程关系