HDU3342 - Legal or Not 拓补排序模板
2015-08-26 21:21
225 查看
HDU3342 - Legal or Not :http://acm.hdu.edu.cn/showproblem.php?pid=3342
这题没什么说的了,就是判断是否能进行拓补排序,代码有解释.
代码 :
这题没什么说的了,就是判断是否能进行拓补排序,代码有解释.
代码 :
#include <iostream> #include <cstring> #include <cstdio> using namespace std; const int MAXN = 111; int N,M; int x,y; int cnt; int Map[MAXN][MAXN],In[MAXN]; void Initial() { cnt = 0; memset(Map,0,sizeof(Map)); memset(In,0,sizeof(In)); } void TopoSort() { int i,j,k; for(i = 0;i < N;i++) { for(j = 0;j < N;j++) { if(!In[j])//j的入度为0,将其选出 { In[j]--,cnt++;//j的入度减一,防止被重复访问 for(k = 0;k < N;k++)//将和j相连的节点入度减一,相当于划去一条边:j -> k,把入度为0的节点单独分出来了 if(Map[j][k]) In[k]--; break; } } } if(cnt == N)printf("YES\n");//最后没有入度大于1的节点 else printf("NO\n"); } int main() { while(~scanf("%d%d",&N,&M) && N) { Initial(); while(M--) { scanf("%d%d",&x,&y); if(!Map[x][y])//Map[x][y]为1代表有一条x -> y的边 Map[x][y] = 1,In[y]++;//y入度加一 } TopoSort(); } return 0; }
相关文章推荐
- (转)Qt中如何使用样式表QPalette以及相关注意事项
- js获取?后面具体参数的值
- Object -C NSSet -- 笔记
- 创建园子第一天
- EasyUI DataGrid 的常用设置
- 01文件循环位移加密 C预处理宏2015/08/24
- Windows Azure Active Directory (3) China Azure AD增加新用户
- Xcode中 黄色文件夹与蓝色文件夹的个人反思
- arcgis sever发布地图服务,使用arcmap版本不同发布不成功的探讨
- Codeforces Round #317 [AimFund Thanks-Round] (Div. 1) B. Minimization 贪心 dp
- ACM网络流模板 最大流ISAP URAL1774
- JavaSE基础整理1-基本概念
- BMP文件头设置要点
- 【全网首发】zabbix如何实现微信报警
- V4L2驱动程序架构
- 将数组元素循环右移k个位置(Java实现)
- 写个dll,引用了自己的lib,lib引用进去了,还老是报错
- 实现前台文字显示字数,当多于一定数量时,用...代替
- 线性表(1)--基础知识
- sql server 2005只有.mdf文件如何附加