题意:

如果给出的单词能够首尾相接,请按字典序输出单词,中间要加’.’

否则输出三个”*”.

思路:

欧拉回路

记得按字典序排序哦~

加边的时候要倒着加。(邻接表遍历的时候是反着的)

记得清空vis数组(因为这个无脑错误WA了好长时间。。。。。)

随便搞搞 就能过了。 数据不是很强…

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char s[1005][25];
int first[60],next[1005],tot,top,v[1005];
int cases,n,ansx,ansy,ansz,in[26],out[26],ans[1005];
bool vis[1005],flag,VIS[26];
struct node{char str[25];int length;}edge[1005];
void add(int x,int y,int z){v[z]=y;next[z]=first[x];first[x]=z;}
bool cmp(node x,node y){return strcmp(x.str,y.str)>0?0:1;}
void dfs(int x){
for(int i=first[x];~i;i=next[i])
if(!vis[i]){
VIS[v[i]]=1;
vis[i]=1,dfs(v[i]);
ans[++top]=i;
}
}
int main(){
scanf("%d",&cases);
while(cases--){
memset(first,-1,sizeof(first));
memset(in,0,sizeof(in));
memset(out,0,sizeof(out));
memset(vis,0,sizeof(vis));
memset(VIS,0,sizeof(VIS));
flag=ansx=ansy=ansz=top=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%s",edge[i].str);
edge[i].length=strlen(edge[i].str);
out[edge[i].str[0]-'a']++;
in[edge[i].str[edge[i].length-1]-'a']++;
}
sort(edge+1,edge+1+n,cmp);
for(int i=n;i;i--)
add(edge[i].str[0]-'a',edge[i].str[edge[i].length-1]-'a',i);
for(int i=0;i<=25;i++){
if(in[i]-out[i]==1)ansx++;
else if(out[i]-in[i]==1)ansy++;
else if(in[i]!=out[i])ansz++;
}
if(!ansz&&ansx==ansy&&(ansx==0||ansx==1)){
int jy;
if(ansx==1){
for(int i=0;i<26;i++)
if(out[i]-in[i]==1){jy=i;break;}
}
else{
for(int i=0;i<26;i++)
if(out[i]){jy=i;break;}
}
VIS[jy]=1;
dfs(jy);
for(int i=0;i<=25;i++)
if((in[i]||out[i])&&!VIS[i])flag=1;
}
else flag=1;
if(!flag){
for(int i=top;i>=2;i--)
printf("%s.",edge[ans[i]].str);
printf("%s\n",edge[ans[1]].str);
}
else puts("***");
}
}

POJ 2337 欧拉回路的更多相关文章

  1. poj 2337 欧拉回路输出最小字典序路径 ***

    把26个小写字母当成点,每个单词就是一条边. 然后就是求欧拉路径. #include<cstdio> #include<iostream> #include<algori ...

  2. poj 2337 && zoj 1919 欧拉回路+连通性判断

    题目要求按字典序排列,而且可能有重边 所以一开始就将数组从大到小排列,那么我将字符串加入链表时就会令小的不断前移,大的被挤到后面 这里有一点问题就是我一开始使用的是qsort: int cmp(con ...

  3. POJ 2337 Catenyms (欧拉回路)

    Catenyms Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8173   Accepted: 2149 Descript ...

  4. POJ 2337 【字典序】【欧拉回路】

    题意: 给你一些单词,判断这些单词能否在保证首尾单词相同的情况下连成一排. 如果有多组解,输出字典序最小的一组解. 这题... WA了两天. 错误有以下: 1.没有初始化好起始位置,默认起始位置是a了 ...

  5. POJ 2337 Catenyms

    http://poj.org/problem?id=2337 题意: 判断给出的单词能否首尾相连,输出字典序最小的欧拉路径. 思路: 因为要按字典序大小输出路径,所以先将字符串排序,这样加边的时候就会 ...

  6. POJ 2337 Catenyms(欧拉回(通)路:路径输出+最小字典序)

    题目链接:http://poj.org/problem?id=2337 题目大意:给你n个字符串,只有字符串首和尾相同才能连接起来.请你以最小字典序输出连接好的单词. 解题思路:跟POJ1386一个意 ...

  7. poj 1041(欧拉回路+输出字典序最小路径)

    题目链接:http://poj.org/problem?id=1041 思路:懒得写了,直接copy吧:对于一个图可以从一个顶点沿着边走下去,每个边只走一次,所有的边都经过后回到原点的路.一个无向图存 ...

  8. poj 1780 , poj 1392 欧拉回路求前后相互衔接的数字串

    两道题目意思差不多 第一题是10进制 , 第二题是2进制的 都是利用欧拉回路的fleury算法来解决 因为我总是希望小的排在前面,所以我总是先将较小数加入栈,再利用另一个数组接收答案,但是这里再从栈中 ...

  9. poj 2337 Catenyms 【欧拉路径】

    题目链接:http://poj.org/problem?id=2337 题意:给定一些单词,假设一个单词的尾字母与还有一个的首字母同样则能够连接.问能否够每一个单词用一次,将全部单词连接,能够则输出字 ...

随机推荐

  1. dubbo之多协议

    (1) 不同服务不同协议 比如:不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议 consumer.xml <?xml version="1.0& ...

  2. VC维与DNN的Boundary

    原文链接:解读机器学习基础概念:VC维来去 作者:vincentyao 目录: 说说历史 Hoeffding不等式 Connection to Learning 学习可行的两个核心条件 Effecti ...

  3. HDU_1269_tarjan求强连通分量

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  4. 个人作业—Alpha测试

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/3338 这个作业要求在哪里 htt ...

  5. String类的特点和使用步骤

    概述 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 类 String 中包括用于检查各个字符串的 ...

  6. 在Android 上运行 openCV ,并做灰度变化的一个例子

    OpenCVImageProcessing1. 导入Opencv的 androrid SDK灰度算法 OpenCVImageProcessing 导入opencv Jar包,配置OpenCVLibra ...

  7. jquery获取当前时间并且格式化

    Date.prototype.Format = function (fmt) {      var o = {          "M+": this.getMonth() + 1 ...

  8. Context、Select(day01)

    Oracle sql: 4天 plsql: 2天 proc: 2天 数据库介绍 1.1 数据库简介 1.1.1 数据管理技术的发展 人工管理阶段:20世纪50年代中期之前 文件管理阶段:20世纪的50 ...

  9. String去除重复字符两个方法

    package cn.aresoft; import java.util.ArrayList;import java.util.List; public class TestBasic { publi ...

  10. uva 704

    自己之前的不见了.. 这题是双向广搜即可过.. // Colour Hash (色彩缤纷游戏) // PC/UVa IDs: 110807/704, Popularity: B, Success ra ...