POJ-2337-Catenyms
来源:互联网 发布:期刊论文仿真数据造假 编辑:程序博客网 时间:2024/05/15 08:15
这个题就是求欧拉路,主要就是判断能否构成欧拉同路,然后DFS一下就行了~
代码:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<stack>using namespace std;const int maxn=1100;struct Node{ char s[30]; int len; bool operator < (const Node &a)const { return strcmp(s,a.s)<0; }}a[maxn];struct Edge{ int u; int v; bool is;}e[maxn];int n,st,p[maxn],in[maxn],out[maxn];stack<int> s;bool vis[30];int find(int x){ if(p[x]==-1) return x; return p[x]=find(p[x]);}void DFS(int x){ for(int i=0;i<n;i++) if(!e[i].is&&e[i].u==x) { e[i].is=true; DFS(e[i].v); s.push(i); }}bool Is(){ int cnt=0; for(int i=0;i<26;i++) if(vis[i]&&p[i]==-1) cnt++; return cnt==1;}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d",&n); memset(p,-1,sizeof(p)); memset(in,0,sizeof(in)); memset(out,0,sizeof(out)); memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) { scanf("%s",a[i].s); a[i].len=strlen(a[i].s); } sort(a,a+n); for(int i=0;i<n;i++) { int u=a[i].s[0]-'a'; int v=a[i].s[a[i].len-1]-'a'; vis[u]=vis[v]=1; e[i].u=u; e[i].v=v; e[i].is=false; in[u]++; out[v]++; u=find(u); v=find(v); if(u!=v) p[v]=u; } int st=e[0].u,cnta=0,cntb=0; bool is=true; for(int i=0;i<26;i++) { if(in[i]==out[i]) continue; else if(in[i]==out[i]+1) { st=i; cnta++; } else if(in[i]==out[i]-1) cntb++; else { is=false; break; } } if(is&&(cnta==cntb&&(cnta==1||cnta==0))&&Is()) { DFS(st); printf("%s",a[s.top()].s); s.pop(); while(!s.empty()) { printf(".%s",a[s.top()].s); s.pop(); } printf("\n"); } else printf("***\n"); } return 0;}
0 0
- POJ 2337 Catenyms
- poj 2337 Catenyms
- POJ 2337 Catenyms
- POJ-2337-Catenyms
- POJ-2337 Catenyms
- poj 2337-Catenyms
- poj 2337 Catenyms
- poj 2337 Catenyms
- poj 2337 Catenyms 欧拉路
- POJ 2337 Catenyms
- POJ 2337 Catenyms
- poj 2337 Catenyms
- zoj 1919 || poj 2337 Catenyms
- poj Catenyms
- poj------Catenyms
- POJ 2337 Catenyms (欧拉回路)
- POJ 2337 Catenyms (欧拉回路)
- poj 2337 Catenyms 有向图欧拉路径
- WPF之创建依赖项属性
- java对象的序列化与反序列化
- 建立基本模型--类图
- 私人通讯录
- 不可小视的论坛外链
- POJ-2337-Catenyms
- android之Fragment(官网资料翻译)
- Swift给每个开发者赢取500万的机会
- JavaWeb--框架学习
- 面向对象发展史
- JavaWeb--框架学习(续)
- 毕业快一年了,从CSDN的博客开始记录一下工作的轨迹。
- TinyXML2 读取
- 设计模式