POJ 2762 Going from u to v or v to u?

来源:互联网 发布:sqlite数据库编辑器 编辑:程序博客网 时间:2024/06/04 18:33

题目没读懂...看了别人的结题报告才知道是要判断是否为弱连通图

 

u与v之间,只要u->v和v->u之间至少存在一条边就可以了

 

对于有向图,强连通分量中的点必然满足,所以先缩点,再拓扑排序求最长链,最长链的顶点数如果等于缩点后的顶点数,则为弱连通图

 

简单证明:首先,如果最长链上的顶点数等于DAG图的顶点数,则所有顶点在一棵树上,从根节点可以到达任意节点,任意顶点对直接至少存在一条边

 

如果最长链上的顶点数小于DAG图的顶点数,假设i不在最长链上,则最长链上存在点对x,y,x和y之间不存在边相连:

1.如果最长链与i所在的链不相交,显然的

2.如果最长链与i所在的链相交,有几种情况,自己画画就知道,认为点i之前的点为i的前驱点,点i之后的点为i的后继点,设j为相交的点,则两条链中,必然存在一种情形:j的某些前驱节点和后继节点相互不可达

 

如果本身就不是弱连通图的话,必定存在i,j,之间没有边,那么最长链的顶点数肯定小于缩点后的顶点数

 

代码:

 

原创粉丝点击