NOIP2015 提高组 day1 信息传递
来源:互联网 发布:车载刮胡刀淘宝网 编辑:程序博客网 时间:2024/05/17 13:45
tarjan求强连通分量大小的裸题
贴代码
#include<cstdio>#include<cstring>#define MAXN 200000#define INF 1e9using namespace std;inline int Min(int a,int b){return a<b?a:b;}struct node{int to,nxt;}adj[MAXN+5];int n,ans;bool ins[MAXN+5];int sta[MAXN+5],tail;int head[MAXN+5],ecnt;int block[MAXN+5],blcnt;int low[MAXN+5],dfn[MAXN+5],dcnt;void add(int u,int v){adj[++ecnt].to=v;adj[ecnt].nxt=head[u];head[u]=ecnt;}void dfs(int u){int i;ins[u]=true;sta[++tail]=u;low[u]=dfn[u]=++dcnt;for(i=head[u];i;i=adj[i].nxt){int v=adj[i].to;if(dfn[v]==0){dfs(v);low[u]=Min(low[u],low[v]);}else if(ins[v])low[u]=Min(low[u],dfn[v]);}if(low[u]==dfn[u]){++blcnt;int sz=0;do{++sz;ins[sta[tail]]=false;block[sta[tail--]]=blcnt;}while(sta[tail+1]!=u);if(sz>1)ans=Min(ans,sz);}}void tarjan(){int i;ans=INF;memset(dfn,0,sizeof dfn);memset(low,0,sizeof low);for(i=1;i<=n;i++)if(dfn[i]==0)dfs(i);}int main(){freopen("message.in","r",stdin);freopen("message.out","w",stdout);int u,v;scanf("%d",&n);for(u=1;u<=n;u++){scanf("%d",&v);add(u,v);}tarjan();printf("%d\n",ans);}
0 0
- NOIP2015 提高组 day1 信息传递
- 【NOIP2015提高组Day1】信息传递
- NOIP2015 提高组 day1 信息传递
- 信息传递 NOIP2015 提高组 Day1 T2
- JZOJsenior4324.【NOIP2015提高组Day1】信息传递
- NOIP2015提高组day1 —— 信息传递(message)
- NOIP2015 提高组 复赛 day1 message 信息传递
- NOIp2015 提高组 信息传递
- NOIP2015提高组 信息传递
- C++&Pascal——NOIP2015提高组day1 t2——信息传递
- NOIP2015提高组Day1
- [NOIP2015]Day1 T2 信息传递
- NOIP2015提高组 信息传递(图论)
- 信息传递(NOIP2015提高组Day1T2)
- NOIP2015复赛提高组day1(A:神奇的幻方 B:信息传递 C:斗地主)
- {小结}NOIP2015提高组Day1
- NOIP2015提高组Day1 Message
- codevs 4511 信息传递(NOIP2015 day1 T2)
- map与unordered_map的区别与选择
- CentOS 6.5 LVM磁盘管理学习笔记
- LintCode-剑指Offer-空格替换
- TCP、UDP 和Socket编程
- 解压版的Tomcat基本配置和安装
- NOIP2015 提高组 day1 信息传递
- 带宽(Bandwidth,UVa 140)
- 苹果开发 笔记(94) UIScrollView 和 Masonry
- LintCode-剑指Offer-(365)二进制中有多少个1
- checkstyle安装
- OpenStack 中混合 Hypervisor 场景的原理分析与最佳实践
- 好久没更博了
- Unique Paths -leetcode
- LintCode-剑指Offer-(204)单例