POJ 2337 欧拉回路
题意:
如果给出的单词能够首尾相接,请按字典序输出单词,中间要加’.’
否则输出三个”*”.
思路:
欧拉回路
记得按字典序排序哦~
加边的时候要倒着加。(邻接表遍历的时候是反着的)
记得清空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("***");}
}
转载于:https://www.cnblogs.com/SiriusRen/p/6532393.html
POJ 2337 欧拉回路相关推荐
- POJ - 2337 Catenyms 欧拉回路
测试数据在这 http://acm.student.cs.uwaterloo.ca/~acm00/030125/data/ 首先在说这道题跟之前做的poj1386很像 但是多的就是要输入路径,并且是最 ...
- poj 2337 Catenyms 【欧拉路径】
题目链接:http://poj.org/problem?id=2337 题意:给定一些单词,假设一个单词的尾字母与还有一个的首字母同样则能够连接.问能否够每一个单词用一次,将全部单词连接,能够则输出字 ...
- poj 1041(欧拉回路+输出字典序最小路径)
题目链接:http://poj.org/problem?id=1041 思路:懒得写了,直接copy吧:对于一个图可以从一个顶点沿着边走下去,每个边只走一次,所有的边都经过后回到原点的路.一个无向图存 ...
- POJ 2337 输出欧拉路径
太无语了. 这道题做了一整天. 主要还是我太弱了. 以后这个就当输出欧拉路径的模版吧. 题目中的输出字典序最小我有点搞不清楚,看了别人是这么写的.但是我发现我过不了后面DISCUSS里面的数据. 题意 ...
- 【POJ - 2337】Catenyms(欧拉图相关,欧拉通路输出路径,tricks)
题干: A catenym is a pair of words separated by a period such that the last letter of the first word i ...
- poj 1386 欧拉回路
题目的大意是,给出一些单词,问能否拼接成一串,使单词字母首尾相连.例如,Sample中的: acm malform mouse 我们可以构造出: acm->malform->mouse,符 ...
- 图论--欧拉路,欧拉回路(小结)
在题目中在慢慢细说概念 1.HDU - 3018 Ant Trip 题目大意:又N个村庄,M条道路.问须要走几次才干将全部的路遍历 解题思路:这题问的是有关欧拉路的判定 欧拉路就是每条边仅仅能走一次, ...
- 欧拉回路 欧拉路径
欧拉路径(瞎)定义 : 如果有一条路径使得能够走完所有的边且每一条边经过有且只有一次,这样的路径叫做欧拉路径 欧拉回路定义 : 如果有从起点出发最后回到起点的一条路径使得能够走完所有的边且每条边经过有 ...
- 图论的起源:柯尼斯堡七桥(一笔画)问题与欧拉路径/回路
柯尼斯堡七桥问题 大数学家欧拉一生中的大部分时间在俄国和普鲁士度过.1735年,他提出了著名的柯尼斯堡七桥(Seven Bridges of Königsberg)问题: 柯尼斯堡(今俄罗斯加里宁格勒 ...
最新文章
- rabbitmq实战指南 pdf_企业服务智能用户运营实战指南.pdf
- IBM 365服务器安装serverraid-7k控制器
- 【深度学习】逆卷积(Deconvolution)概述
- 基于RSA的WEB前端密码加密方案
- 给你一个K8S的“发行版”
- 2017.5.7 过河 失败总结
- Docker使用笔记-2-[之] oracle-xe安装
- MySQL远程访问权限,允许远程连接的开启
- 数组reduce()方法
- [译] TensorFlow 教程 #15 - 风格迁移
- 二叉树叶子结点个数统计
- Spring Boot基础学习笔记08
- Mon Dec 31 00:00:00 CST 2012格式的字符串转时间格式
- EPUB和PDF的区别,有什么好用的epub阅读器
- Windows 安全系列05-U盘安全
- Beautiful Soup的使用
- php5.3 pear,php-5.3 下安装pear 和 pecl
- 光流估计(三) PWC-Net 模型介绍
- c语言vc98打开路径,为什么找不到Microsoft Visual StudioVC98中的CRT文件夹?
- 嵩天《Python网络爬虫与信息提取》实例2:中国大学排名定向爬虫
热门文章
- 查看mysql SQL物理读_Oracle查看逻辑读、物理读资源占用排行的SQL语句
- 公众号服务器配置url证书问题,公众号服务器配置url,验证token一直出错,为什么?...
- 参数php_干净的PHP代码-函数参数
- 字符串相加 java_字符串相加-LeetCode(Java实现)
- css flex布局 padding,CSS3 flex布局之快速实现BorderLayout布局
- 安装python的moviepy_MoviePy 安装 配置
- 空之轨迹手游服务器维护,《空之轨迹》手游06月15日更新公告
- IPhone鸿蒙系统,iPhone 13外观再次确认,鸿蒙系统也将临世,神仙又打架
- matlab中nsamp,matlab用于数字调制,几个函数的使用问题
- C#连接MySQL时出现Unable to connect to any of the specified MySQL hosts.错误