HDU3342---Legal or Not
来源:互联网 发布:盐为什么国家控制知乎 编辑:程序博客网 时间:2024/06/16 04:03
寒假按照模版过了几个拓扑排序题,思路明白,但是代码不太清楚,然后看视频,用队列的方法重新搞了搞,简单明了。
然而这道题刚开始没考虑重边,然后重新定义了一个k=m;有重边的时候k--;然后就过了。
#include<stdio.h>#include<algorithm>#include<string.h>#include<stack>#include<queue>#define ll __int64#define M 100007using namespace std;int n,m,map[110][110],in[110],k;queue<int> s;void topsort(){ int ans=0,flag=0; for(int i=0;i<n;i++){ if(in[i]==0) {s.push(i);//把入度为0的搞进来 flag++; } } while(flag!=0) { int t=s.front(); s.pop(); flag--; for(int i=0;i<n;i++){//把t指向的入度减一 if(map[t][i]==1){ in[i]--; ans++; if(in[i]==0) {//如果此时入度为一,入列 s.push(i); flag++; } } } } if(ans==k) printf("YES\n"); else printf("NO\n");}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0) break; k=m; memset(in,0,sizeof(in)); memset(map,0,sizeof(map)); int a,b; for(int i=0;i<m;i++){ scanf("%d%d",&a,&b); if(!map[a][b]){ map[a][b]=1; in[b]++; } else k--;//重边的情况 } topsort(); }}
然后另一个代码,终于理解了
#include<stdio.h>#include<algorithm>#include<string.h>#include<stack>#include<queue>#define ll __int64#define M 100007using namespace std;int n,m,map[110][110],in[110],k;queue<int> s;void topsort(){ int ans=0; for(int i=0;i<n;i++) { int j=0; while(in[j]!=0) j++; in[j]=-1; for(int k=0;k<n;k++) { if(map[j][k]==1) in[k]--,ans++; } } if(ans==k) printf("YES\n"); else printf("NO\n");}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0) break; k=m; memset(in,0,sizeof(in)); memset(map,0,sizeof(map)); int a,b; for(int i=0;i<m;i++){ scanf("%d%d",&a,&b); if(!map[a][b]){ map[a][b]=1; in[b]++; } else k--;//重边的情况 } topsort(); }}
0 0
- HDU3342---Legal or Not
- HDU3342-Legal or Not
- HDU3342-Legal or Not
- hdu3342 Legal or Not 拓扑排序
- Legal or Not(hdu3342拓扑排序)
- hdu3342 Legal or Not (拓扑排序+邻接矩阵)
- hdu3342 Legal or Not---拓扑排序
- HDU3342--Legal or Not(强连通)
- HDU3342 Legal or Not 【拓扑排序】
- hdu3342——Legal or Not
- HDU3342 Legal or Not(拓扑排序)
- hdu3342 Legal or Not(拓扑排序)
- hdu3342 Legal or Not【拓扑排序】
- HDU3342:Legal or Not(拓扑排序)
- HDU3342---Legal or Not(拓扑排序。)
- HDU3342 Legal or Not 解题报告--拓扑排序
- hdu3342 Legal or Not(拓扑排序,判环)
- HDU3342 Legal or Not【拓扑排序】【链式前向星】
- 黑马程序员----异常
- C#调用Winrar实现解压缩
- 设计模式之【工厂模式】
- 【整理】数制
- ISP Pipeline的关键模块之Demosaic(二)
- HDU3342---Legal or Not
- ActionBar笔记
- 可扩展的android重打包工具
- leetcode 日经贴,Cpp code -Combination Sum III
- iOS 将字典转成json格式字符串
- Sparta
- 1014. Waiting in Line (30)
- Spring TestContext简介
- Android draw9path工具的使用(9格图片)