<a target=_blank href="http://poj.org/problem?id=1386" target="_blank">
</a>
题目链接
解题思路:把每个单词当成是一条有向边。把首字母和尾字母当成是节点,如果该字母是一个单词的首字母,该字母的入度就加一,如果是尾字母,该字母的出度就加一。然后判断是否形成欧拉回路即可。
欧拉路径判断条件:首先该图必须是连通图。对于无向图,所有顶点的读都为偶数,对于有向图,要么所有顶点的入度等于出度,要么只有两个顶点入度和出度不同,一个入度比出度大一,一个出度比入度大一。
连通图的判断方法:对每条边的两个顶点进行合并,如果最终能合并到一个集合,说明该图为连通图。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
using namespace std;
int ru[27], ch[26], num, root[26];