hdu1285(邻接矩阵写拓扑排序)
2016-06-27 12:53
253 查看
评了好几次,有迷之错误!
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
int n,map[1009][1009],ans,m,cnt[1009];
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
int x,y;
memset(map,0,sizeof(map));
memset(cnt,0,sizeof(cnt));
for (int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
if (map[y][x]==0) cnt[y]++;//避免重边
map[y][x]=1;
}
for (int i=1;i<=n;i++)
{
int j;
for (j=1;j<=n;j++) if (cnt[j]==0) break;
cnt[j]--;
if (i<n) printf("%d ",j);else printf("%d",j);
for (int l=1;l<=n;l++) if (map[l][j]==1) cnt[l]--;
}///拓扑排序,非常简洁
printf("\n");
}
return 0;
}
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
int n,map[1009][1009],ans,m,cnt[1009];
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
int x,y;
memset(map,0,sizeof(map));
memset(cnt,0,sizeof(cnt));
for (int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
if (map[y][x]==0) cnt[y]++;//避免重边
map[y][x]=1;
}
for (int i=1;i<=n;i++)
{
int j;
for (j=1;j<=n;j++) if (cnt[j]==0) break;
cnt[j]--;
if (i<n) printf("%d ",j);else printf("%d",j);
for (int l=1;l<=n;l++) if (map[l][j]==1) cnt[l]--;
}///拓扑排序,非常简洁
printf("\n");
}
return 0;
}
相关文章推荐
- 如何调试OCX
- Linux性能相关五大命令
- java中重载与重写的区别
- 空谷幽兰美男子~~~
- Wormholes poj 3259 (bellman-floyd+spfa)
- ipad和iphone的适配
- Java基础教程
- 明星“真空”出镜上直播,这"戏"该如何继续演?
- IOS学习之蓝牙4.0 BLE
- UVa1601万圣节后的早晨
- 超越之MongDB系列教程(六) MongDB的查询
- Swift 使用CollectionView 实现图片轮播封装就是这样简单
- C++中protected的访问权限
- TomCat的配置和优化
- 【转载】浅谈HTTP中Get与Post的区别
- Sort Transformed Array
- vxworks的启动任务taskSpawn
- 添物零基础到大型全栈架构师 不花钱学计算机及编程(预备篇)- 计算机基础
- 添物零基础到大型全栈架构师 不花钱学计算机及编程(预备篇)- 计算机基础
- Android网络请求框架剖析一、Okhttp