博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codevs 1332 上白泽慧音
阅读量:4959 次
发布时间:2019-06-12

本文共 1717 字,大约阅读时间需要 5 分钟。

题目链接:

题解:

  裸Tarjan,每次出栈操作时,记录当前强连通分量中的结点数,与ans1比较,并用ans2记录当前最大强连通分量的序号

1 #include
2 #include
3 #include
4 using namespace std; 5 #define MAXN 5010 6 #define MAXM 50010 7 int n,m,time,cnt,heads[MAXN],DFN[MAXN],Low[MAXN],stack[MAXN],top,ans1,ans2,belong[MAXN]; 8 bool vis[MAXN]; 9 struct node10 {11 int v,next;12 }edge[MAXM];13 void add(int x,int y)14 {15 edge[++cnt].next=heads[x];16 heads[x]=cnt;17 edge[cnt].v=y;18 }19 void _(int x)//出栈 20 {21 int i,j=0;22 cnt++;//强连通分量序号更新 23 do24 {25 i=stack[top--];26 vis[i]=false;27 belong[i]=cnt;28 j++;29 }while(x!=i);30 if(j>=ans1)//更新最大强连通分量结点数和序号 31 {32 ans1=j;33 ans2=cnt;34 }35 }36 void tarjan(int x)37 {38 DFN[x]=Low[x]=++time;39 vis[x]=true;40 stack[++top]=x;41 for(int i=heads[x];i!=0;i=edge[i].next)42 {43 if(!DFN[edge[i].v])44 {45 tarjan(edge[i].v);46 Low[x]=min(Low[x],Low[edge[i].v]);47 }48 else if(vis[edge[i].v])Low[x]=min(Low[x],DFN[edge[i].v]);49 }50 if(DFN[x]==Low[x])_(x);51 }52 int main()53 {54 scanf("%d%d",&n,&m);55 for(int i=1;i<=m;i++)56 {57 int x,y,z;58 scanf("%d%d%d",&x,&y,&z);59 if(z==1)add(x,y);60 else61 {62 add(x,y);63 add(y,x);64 }65 }66 cnt=0;67 for(int i=1;i<=n;i++)68 if(!DFN[i])tarjan(i);69 printf("%d\n",ans1);70 for(int i=1;i<=n;i++)71 {72 if(belong[i]==ans2)printf("%d ",i);//如果该结点属于最大强连通分量,输出 73 }74 return 0;75 }

 

转载于:https://www.cnblogs.com/xqmmcqs/p/5965769.html

你可能感兴趣的文章
Spring Boot实战笔记(二)-- Spring常用配置(Scope、Spring EL和资源调用)
查看>>
第二章:webdriver 控制浏览器窗口大小
查看>>
【动态规划】流水作业调度问题与Johnson法则
查看>>
Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告
查看>>
活现被翻转生命
查看>>
POJ 1228
查看>>
SwaggerUI+SpringMVC——构建RestFul API的可视化界面
查看>>
springmvc怎么在启动时自己执行一个线程
查看>>
流操作的规律
查看>>
Python基础学习15--异常的分类与处理
查看>>
javascript运算符的优先级
查看>>
React + Redux 入门(一):抛开 React 学 Redux
查看>>
13位时间戳和时间格式化转换,工具类
查看>>
vue router-link子级返回父级页面
查看>>
C# 通知机制 IObserver<T> 和 IObservable<T>
查看>>
Code of Conduct by jsFoundation
查看>>
div 只显示两行超出部分隐藏
查看>>
C#小练习ⅲ
查看>>
电源防反接保护电路
查看>>
arraylist
查看>>