UVA315-Network(求割点个数,模板题)||tarjan
2016-08-10 19:06
288 查看
这个就是很裸的求割点的个数
关于割点什么的可以参考:http://blog.csdn.net/idrandom/article/details/52173817
刚开始输入写挂了居然出了样例。。。蜜汁wa
关于割点什么的可以参考:http://blog.csdn.net/idrandom/article/details/52173817
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int Max=10050; struct node{ int v,nxt; int bri;//是否是桥 }e1[Max]; int h[Max]; int dfn[Max],low[Max],mst[Max],vis[Max]; int cut[Max],ad[Max]; int siz,idx,st,ct,br; void init(){ memset(e1,-1,sizeof e1); memset(h,-1,sizeof h); memset(vis,0,sizeof vis); memset(ad,0,sizeof ad); memset(cut,0,sizeof cut); siz=idx=st=ct=br=0; } void add(int u,int v){ e1[siz].nxt=h[u]; e1[siz].v=v; e1[siz].bri=0; h[u]=siz++; } void tarjan(int u,int fa){ int v; low[u]=dfn[u]=++idx; mst[++st]=u; vis[u]++; int son=0; for(int i=h[u];~i;i=e1[i].nxt){ v=e1[i].v; if(v==fa)continue; if(!vis[v]){ son++; tarjan(v,u); if(low[u]>low[v])low[u]=low[v]; //桥 if(low[v]>dfn[u]){ ++br; e1[i].bri=1; e1[i^1].bri=1; } //割点 if(fa&&low[v]>=dfn[u]){//不是根 cut[u]=1; ad[u]++; } } else if(dfn[v]<low[u])low[u]=dfn[v]; } if((!fa)&&son>1)cut[u]=1; if(!fa)ad[u]=son-1; vis[u]++; st--; } char str[505]; int main(){ int n; while(~scanf("%d",&n)&&n){ init(); getchar(); while(gets(str)){ if(str[0]=='0')break; int len=strlen(str); int u=0,v=0; for(int i=0;i<len;i++){ if(!u){ while(i<len&&str[i]!=' '){u*=10;u+=(str[i++]-'0');} i++; } while(i<len&&str[i]!=' '){v*=10;v+=(str[i]-'0');i++;} add(u,v); add(v,u); v=0; } } for(int i=1;i<=n;i++){ if(!vis[i])tarjan(i,0); } int ans=0; for(int i=1;i<=n;i++){ if(cut[i])ans++; } printf("%d\n",ans); } return 0; }
刚开始输入写挂了居然出了样例。。。蜜汁wa
相关文章推荐
- poj 1144 Network(模板题)(Tarjan 关节点的朴素算法)
- poj 1144 Network (tarjan割点模板)
- Network(特殊的输入格式+tarjan求割点模板题)
- [UVA315]Network(tarjan, 求割点)
- UVA315 Network(Tarjan求无向图割点的数目)
- uva315 Network 【图论-tarjan-求桥】
- POJ 1144 Network Tarjan 求无向图的割点的个数 Tarjan 模板题
- UVA315 Network(tarjan求割点)
- 【模板】【POJ1144】Network——tarjan求割点
- kuangbin专题九 POJ1236 Network of Schools(Tarjan模板题)
- uva315 Network 【tarjan-求割点】
- POJ 1459 Power Network(网络流模板题)
- LCA离线模板(Tarjan)倍增模板 hdu2586
- [2-SAT 任意解 Tarjan 模板题] POJ 3683 Priest John's Busiest Day
- tarjan 算法模板
- pku 1236 Network of Schools (tarjan缩点)
- pku 3694 Network tarjan求割边
- tarjan模板(缩点,求有向图强连通分量)
- HDOJ2586 lca查询 tarjan模板程序
- 求割点模板——Network