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

zoj 1919 Catenyms

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

zoj 1919 Catenyms

#include<cstdio>#include<cstring>#include<vector>#include<stack>#include<algorithm>using namespace std;vector<int>e[1001];int p[30],in[30],out[30],n,t,r,c;int q[1111],vis[1111];char s[1111][30];int cmp(const void *s1,const void *s2){    return strcmp((char *)s1,(char *)s2)>0;}void init(){    memset(vis,0,sizeof(vis));    int i;    for(i=1;i<=26;i++)    {        in[i]=out[i]=0;        p[i]=i;    }    for(i=0;i<=1000;i++)    e[i].clear();}int find(int i){  if(p[i]!=i) return find(p[i]);  return p[i];}void mege(int a,int b){    a=find(a);    b=find(b);    if(a!=b)    p[b]=a;}void Print(int i){    if(i!=-1)    {        Print(q[i]);        if(c<n-1)        printf("%s.",s[i]);        else        printf("%s",s[i]);        c++;    }    else    return;}void dfs(int i,int w){    if(w==n)    {        r=1;        Print(i);        return;    }    else    {        if(r==0)        { int j,l; for(j=0;j<e[i].size();j++) {     l=e[i][j];     if(!vis[l]&&i!=l)     {         vis[l]=1;         q[l]=i;         dfs(l,w+1);         vis[l]=0;     } }        }    }}int main(){    scanf("%d",&t);    while(t--)    {        int i,j,start=0;        r=c=0;        init();        scanf("%d",&n);        for(i=0;i<n;i++)        { scanf("%s",s[i]); int L=strlen(s[i]); int a=s[i][0]-'a'+1; int b=s[i][L-1]-'a'+1; in[b]++; out[a]++; vis[a]=vis[b]=1; mege(a,b);        }        int tag=0,x=0,y=0,other=0,flag;        for(i=1;i<=26;i++)        { if(vis[i]) {     if(find(i)==i)     tag++;     if(out[i]!=in[i])     {         if(in[i]+1==out[i])         x++;         else if(in[i]-1==out[i])         y++;         else         other++;     } }        }        if(tag==1&&other==0&&((x==0&&y==0)||(x==1&&y==1)))        flag=1;        else        flag=0;        if(!flag)        { printf("***n");        }        else        { qsort(s,n,sizeof(s[0]),cmp); if(x==0&&y==0) {     for(i=1;i<=26;i++)     if(vis[i])     {        start=i;break;     } } else {     for(i=1;i<=26;i++)     {         if(vis[i]&&in[i]+1==out[i])         {  start=i;break;         }      } } for(i=0;i<n;i++) {     int l=strlen(s[i]);     for(j=0;j<n;j++)     {         if(i!=j&&s[i][l-1]==s[j][0])         e[i].push_back(j);     } } for(i=0;i<n;i++) {     if(s[i][0]-'a'+1==start)     {         memset(vis,0,sizeof(vis));         q[i]=-1;         vis[i]=1;         dfs(i,1);     }     if(r) break; } printf("n");        }    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374120.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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