栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2117 Electricity

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2117 Electricity

#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N=10010;struct Edge{    int to,nxt;}edge[N<<2];int head[N],vis[N],dfn[N],low[N],cut[N];    //cut[u] 表示u这个点割边数int cnt,k,root;void addedge(int cu,int cv){    edge[cnt].to=cv;    edge[cnt].nxt=head[cu];    head[cu]=cnt++;}void Tarjan(int u,int fa){  //割点模板    int son=0;    vis[u]=1;    dfn[u]=low[u]=++k;    for(int i=head[u];i!=-1;i=edge[i].nxt){        int v=edge[i].to;        if(vis[v]==1 && v!=fa) low[u]=min(low[u],dfn[v]);        if(!vis[v]){ Tarjan(v,u); son++; low[u]=min(low[u],low[v]); if((u==root && son>1) || (u!=root && dfn[u]<=low[v]))     cut[u]++;   //cut[u] 表示u这个点割边数        }    }    vis[u]=2;}int main(){    //freopen("input.txt","r",stdin);    int n,m;    while(~scanf("%d%d",&n,&m) && n){        if(m==0){ printf("%dn",n-1); continue;        }        memset(head,-1,sizeof(head));        memset(vis,0,sizeof(vis));        memset(cut,0,sizeof(cut));        memset(dfn,0,sizeof(dfn));        cnt=0;        int u,v;        while(m--){ scanf("%d%d",&u,&v); addedge(u,v); addedge(v,u);        }        int ans=0;        int MAX=0;        for(int i=0;i<n;i++){ if(!dfn[i]){     ans++;     k=0;     root=i;     Tarjan(i,-1); } MAX=max(MAX,cut[i]);     //取最大的        }        printf("%dn",ans+MAX);    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377255.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号