10129 - Play on Words(欧拉道路<有向图>)
来源:互联网 发布:手机指纹锁软件 编辑:程序博客网 时间:2024/04/29 17:05
题目:10129 - Play on Words
题目大意:词语接龙。
解题思路:刚开始没想到欧拉道路,直接找,结果超时了。
这题满足要求的话就是把每个单词看做一条路,每条路连在一起走一遍就符合要求, 欧拉回路也是符合要求的。
满足欧拉道路:1,至多只有两个点的出度入度相差1。
2, 这个有向图的无向图连通。(刚开始一直在想,如果有两条一样的路,这样怎么处理,后面发现只要每个点都可以访问到就说明连通了)
#include<stdio.h>#include<string.h>const int N = 26;const int M = 1005;int t, n;int map[N][N], in[N], out[N], visit[N];char word[M];void dfs(int x, int &m) {m++;visit[x] = 1;for(int i = 0; i < N; i++)if(map[x][i] && !visit[i]) {dfs(i, m);}}int num_vertic() {int num = 0;for(int i = 0; i < N; i++)if(in[i] || out[i])num++;return num;}int get_first() {for(int i = 0; i < N; i++)if(in[i] == 0 && out[i]) {for(int j = 0; j < N; j++)if(map[i][j]) return j;}}int main() {scanf("%d", &t);while(t--) {scanf("%d", &n);int i, e, f;memset(map, 0, sizeof(map));memset(in, 0, sizeof(in));memset(out, 0, sizeof(out));memset(visit, 0, sizeof(visit));for(i = 0; i < n; i++) {scanf("%s", word); f = word[0] - 'a'; e = word[strlen(word) - 1] - 'a';in[e]++;out[f]++;map[f][e] = 1;map[e][f] = 1;}int ok = 0;for(i = 0; i < N; i++) {if(in[i] - out[i] == 1 || out[i] - in[i] == 1) ok++;else if(in[i] != out[i]) {ok = -1;break;}}if(ok != 0 && ok != 2) printf("The door cannot be opened.\n");else {if(ok == 2)e = get_first(); ok = 0;dfs(e, ok);if(ok == num_vertic())printf("Ordering is possible.\n");elseprintf("The door cannot be opened.\n");}}return 0;}
0 0
- 10129 - Play on Words(欧拉道路<有向图>)
- uva10129 Play On words (有向欧拉道路存在性)
- UVa 10129 - Play on Words, 欧拉道路
- uva 10129 Play on Words(欧拉道路)
- UVa 10129 - Play on Words 欧拉道路
- Uva 10129 Play on Words(欧拉道路)
- UVa 10129 - Play on Words(欧拉道路)
- ZJU2016 Play on Words - 有向图的欧拉通路
- POJ 1386 Play on Words(有向欧拉通路 连通图)
- 【欧拉路径(有向图)】poj 1386 play on words
- HDU 1116 Play on Words(欧拉路径(有向图)+并查集)
- HDU 1116 Play on Words 欧拉道路
- UVA10129-Play on Words(欧拉道路)
- Uva 10129 - Play on Words 单词接龙 欧拉道路应用
- UVA - 10129 - Play on Words <欧拉道路+并查集>
- POJ--1386--Play on Words【判断有向图欧拉通路、欧拉回路】
- POJ 1386-Play on Words(有向欧拉通路)
- 10129 - Play on Words//欧拉通路
- 菜鸟入门:Java语言学习六大要点
- [MySQL binlog]彻底解析Mixed日志格式的binlog
- Json.Net用法
- UVA 11624 Fire!(两次BFS、超级源)
- java内部类的作用分析
- 10129 - Play on Words(欧拉道路<有向图>)
- linux下编译php中configure参数具体含义
- [POJ 1523] SPF
- 话说互联网保险
- ubuntu 12.04 访问windows共享
- JS的get和set
- Linux命令之远程文件传输-scp
- UFLDL Exercise:PCA and Whitening
- 三 :ios学习笔记 音频 视频