#include<stdio.h>//求出其所有的强连通分量缩点,选出出度和入度最大的那个就是要求的边
#include<string.h>
#include<stdlib.h>
#define N 51000
struct node {
int v,next;
}bian[N];
int head[N],yong,n,indegree[N],outdegree[N],visit[N],suo[N],dfn[N],f,low[N],index,stac[N],top;
void addedge(int u,int v) {
bian[yong].v=v;
bian[yong].next=head[u];
head[u]=yong++;
}
void init() {
memset(head,-1,sizeof(head));
yong=0;index=0,top=0;f=0;
memset(outdegree,0,sizeof(outdegree));
memset(low,0,sizeof(low));
memset(dfn,0,sizeof(dfn));
memset(indegree,0,sizeof(indegree));
memset(visit,0,sizeof(visit));
memset(stac,0,sizeof(stac));
}
int Min(int a,int b) {
return a>b?b:a;
}
int MAX(int a,int b) {
return a>b?a:b;
}
void tarjan(int u) {
int v,i;
dfn[u]=low[u]=++index;
visit[u]=1;
stac[++top]=u;
for(i=head[u];i!=-1;i=bian[i].next) {
v=bian[i].v;
if(!dfn[v]) {
tarjan(v);
low[u]=Min(low[u],low[v]);
}
else
if(visit[v]==1)
low[u]=Min(low[u],dfn[v]);
}
if(dfn[u]==low[u]) {
f++;
int v;
do{
v=stac[top--];
visit[v]=2;
suo[v]=f;
}while(v!=u);
}
}
int main() {
int m,i,j,fin,fou,v;
while(scanf("%d%d",&n,&m)!=EOF) {
if(m==0) {
printf("%d\n",n);
continue;
}
init();
while(m--) {
scanf("%d%d",&i,&j);
addedge(i,j);
}
for(i=1;i<=n;i++)
if(visit[i]!=2)
tarjan(i);
if(f==1) {//判断是否已经是一个联通图
printf("0\n");
continue;
}
// printf("1\n");
for(i=1;i<=n;i++)
for(j=head[i];j!=-1;j=bian[j].next) {
v=bian[j].v;
// printf("%d %d\n",suo[i],suo[v]);
if(suo[i]!=suo[v]) {
indegree[suo[v]]++;
outdegree[suo[i]]++; }
}
fin=0;fou=0;
for(i=1;i<=f;i++) {
if(indegree[i]==0)
fin++;
if(outdegree[i]==0)
fou++;
}
printf("%d\n",MAX(fin,fou));
}
return 0;
}

最新文章

  1. jQuery基础知识准备
  2. php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法
  3. 数据库Mark.2
  4. NYOJ-组合数
  5. 为什么重新设计 ASP.NET?
  6. sublime text主要快捷键列表
  7. java.lang包的分类
  8. matrix_last_acm_1
  9. Java 专业人士必备的书籍和网站列表
  10. 移动端版本兼容js
  11. 编写一个void sort(int*x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件
  12. java对象引用传递和值传递的一些总结
  13. 团队作业8——第二次项目冲刺(Beta阶段)--5.25 5th day
  14. [python]使用django快速生成自己的博客小站,含详细部署方法
  15. SharePoint2013 列表栏设置
  16. B树和B+树详解
  17. 19.3.20 cmd操作:1.dir查看当前文件夹内的文件;2.alt+space+c关闭cmd窗口
  18. 比较爬虫用的语言Python与Go
  19. Python实战:网络爬虫都能干什么?
  20. 启动软件丢失 MSVCR100.dll 系列,缺少库的问题

热门文章

  1. solaris&amp;nbsp;10&amp;nbsp;关闭ftp、telnet
  2. Android常见面试题学习第一天(原创)
  3. Python基本数据类型之数字int
  4. PLSQL简介
  5. 用Webpack构建Vue项目
  6. windows7 安装 choco
  7. vue路由history模式下打包node服务器配置
  8. css3的过滤效果
  9. Lazy Stored Properties--无括号时为匿名函数
  10. WIN系统查询版本