教训:使用邻接表的时候一定要把邻接表的结构组定义的足够大,不能仅仅等于节点的个数,因为线段的数量往往远超过节点的数量。

这个题目是拓扑排序练习,提高下理解。

 #include<iostream>
using namespace std;
struct TOPO
{
int from,to,next;
};
TOPO p[];//这里要定义的足够大才行
int head[];//它和上面的是同步的大小才好
int *in,*use;
int cnt;
void Merge(int f,int t)
{
p[cnt].from=f;
p[cnt].to=t;
p[cnt].next=head[f];
head[f]=cnt;
cnt++;
}
int main()
{
int n,m;
while(cin>>n>>m)
{
cnt=;
in=new int[n+];
use=new int[n+];
for(int i=;i<=n;i++)
{
in[i]=;
use[i]=;
head[i]=-;
}
int a,b;
for(int i=;i<=m;i++)
{
cin>>a>>b;
Merge(a,b);
in[b]++;
//out[a]++;
}
int index=; for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
if(!use[j]&&in[j]==)
{
if(i>)cout<<" ";
index=j;
use[j]=;
cout<<j;
break;
}
}
for(int j=head[index];j!=-;j=p[j].next)
{
in[p[j].to]--;
}
}
cout<<endl;
delete []in;
delete []use;
}
return ;
}

最新文章

  1. java在类定义时对hashset的便捷初始化方法
  2. MySql技巧个人笔记
  3. 【转】 MySQL与PostgreSQL:该选择哪个开源数据库?哪一个更好?
  4. 【英语】Bingo口语笔记(19) - 如何用英语叙旧
  5. linux网站推荐
  6. Centos6.4最小化安装后使用xfce桌面环境
  7. Telerik 控件事例(鼠标拖动行,拖动列,设置行对齐,行宽,是否显示)
  8. bzoj1823
  9. 【转载】Oracle层次查询和分析函数
  10. Java并发3-多线程面试题
  11. error: C2664: “zajiao::zajiao(const zajiao &amp;)”: 无法将参数 1 从“const char [12]”转换为“char *”
  12. 让EF支持sql语句
  13. linux iptables 配置
  14. ReactiveSwift源码解析(十一) Atomic的代码实现以及其中的Defer延迟、Posix互斥锁、递归锁
  15. C#的数据类型总结(1)
  16. JAVA 多线程(3)
  17. DDD实践:领域事件
  18. GBDT和随机森林的区别
  19. Lustre文件系统部署和应用探索
  20. Java连接oracle数据库的两种常用方法

热门文章

  1. win7下本地运行spark以及spark.sql.warehouse.dir设置
  2. LeetCode 95——不同的二叉搜索树 II
  3. 关于C#中如何使用wmi获得操作系统信息?
  4. JavaScript筑基篇(三)-&gt;JS原型和原型链的理解
  5. 第四课——MFC应用程序框架
  6. Ubuntu下FileZilla的安装
  7. 在LaTex中插入电路图的方法(插入图片)
  8. 自定义类属性设置及setter、getter方法的内部实现
  9. ARKit----学习一
  10. TCP系列31—窗口管理&amp;流控—5、TCP流控与滑窗