资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 面试经验 > 面试问答

poj 3713 Transferring Sylla

面试问答 更新时间: 发布时间: 计算机考试归档 最新发布

poj 3713 Transferring Sylla

#include<cstdio>#include<cstring>#include<iostream>#include<queue>using namespace std;const int inf=1<<29;const int maxn=510;const int maxm=5e4;int e,dfscolck,head[maxn],pnt[maxm],nxt[maxm],dfn[maxn],low[maxn];int n,m,root;bool lost[maxn];void AddEdge(int u,int v){    pnt[e]=v;nxt[e]=head[u];head[u]=e++;}int DFS(int u,int f,bool &find){    dfn[u]=low[u]=++dfscolck;    int child=0;    for(int i=head[u];i!=-1;i=nxt[i])    {        if(lost[pnt[i]]) continue;        if(!dfn[pnt[i]])        { child++; low[u]=min(low[u],DFS(pnt[i],u,find)); if(find)     return low[u]; if(u==root&&child>1||u!=root&&low[pnt[i]]>=dfn[u]) {     find=true;     return low[u]; }        }        else if(dfn[pnt[i]]<dfn[u]&&pnt[i]!=f)        { low[u]=min(low[u],dfn[pnt[i]]);        }    }    return low[u];}void solve(){    bool is=false;    for(int i=0;i<n;i++)    {        lost[i]=1;        dfscolck=0;        memset(dfn,0,sizeof(dfn));        root=(i+1)%n;        DFS(root,-1,is);        for(int j=0;j<n;j++) if(j!=i&&!dfn[j]) {     is=true;     break; }        lost[i]=0;        if(is) break;    }    if(is)        printf("NOn");    else        printf("YESn");}int main(){    while(scanf("%d%d",&n,&m)&&(n+m))    {        e=0;        memset(head,-1,sizeof(head));        for(int i=0;i<m;i++)        { int u,v; scanf("%d%d",&u,&v); AddEdge(u,v); AddEdge(v,u);        }        if(n<=2)        { printf("NOn"); continue;        }        solve();    }    return 0;}
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/376806.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【poj 3713 Transferring Sylla】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2