HDU 1116 Play on Words (Oraton Road)

Source: Internet
Author: User
Tags in degrees

problem Description
Some of the secret doors contain a very interesting word puzzle. The team of archaeologists have to solve it to open that doors. Because there isNo other-to-open the doors, the puzzle isVery important forus. There isA large number of magnetic plates on every door. Every plate have one word written on it. The plates must is arranged into a sequenceinchSuch a-every word begins with the same letter asThe previous word ends. For example, the word ' ACM '"'Can be followed by the word ' Motorola"'. Your Task isTo write a computer program that would read the list of words and determine whether it ispossible to arrange all of the platesincha sequence (according to the given rule) and consequently to open the door. 

Input
The 
 the input consists of T test cases. The number of them (T) is  given on the first line of the input file. Each test case  begins and a line containing a single integer number nthat indicates The number of plates (1  <= N <= 100000  ). Then exactly nlines follow, each containing a single word. Each of the word contains at least of 1000  lowercase characters, that means onl Y letters   a   " through "   Z   would appear in  the word. The same word may appear several times in  the list. 

Output
 is inch  is  from  "ordering is possible. " " The door cannot be opened. "

Sample Input
3 2 ACMIBM 3 Acmmalformmouse 2 Okok

Sample Output
 is possible. The door cannot be opened.

Source Central Europe 1999

First convert the tail to the number. Calculates the degree of entry for each point. Mark 0-26 which points have appeared.

Determine if it is Oraton road. 1. Root <=1

2, there are 0 in the degree of different | | 2 in degrees different and 1 difference

All the rest is not Oraton road.

1 #pragmaComment (linker, "/stack:1024000000,1024000000")2#include <iostream>3#include <cstdio>4#include <cstring>5#include <cmath>6#include <math.h>7#include <algorithm>8#include <queue>9#include <Set>Ten#include <bitset> One#include <map> A#include <vector> -#include <stdlib.h> -#include <stack> the using namespacestd; - #definePI ACOs (-1.0) - #defineMax (a) (a) > (b)? (a): (b) - #defineMin (a) (a) < (b)? (a): (b) + #definell Long Long - #defineEPS 1e-10 + #defineMOD 1000000007 A #defineN 1006 at #defineINF 1e12 - intN; - CharS[n]; - inta[ $]; - intb[ $]; - intvis[ $],fa[ $]; in voidinit () { -     for(intI=0;i< -; i++){ tofa[i]=i; +    } - } the intFindintx) { *    returnfa[x]==x?x:fa[x]=find (Fa[x]); $ }Panax Notoginseng voidMergeintXinty) { -    introot1=find (x); the    intRoot2=find (y); +    if(ROOT1==ROOT2)return; Afa[root1]=Root2; the } + intMain () - { $    intT; $scanf"%d",&t); -     while(t--){ -Init ();//and I forgot ...  theMemset (A,0,sizeof(a)); -memset (b,0,sizeof(b));Wuyimemset (Vis,0,sizeof(Vis)); thescanf"%d",&n); -        for(intI=0; i<n;i++){ Wuscanf"%s", s); -          intlen=strlen (s); About          intnum1=s[0]-'a'; $          intnum2=s[len-1]-'a'; - merge (num1,num2); -b[num1]++; -a[num2]++; Avis[num1]=1; +vis[num2]=1; the       } -       intCnt=0; $        for(intI=0;i< -; i++){ the          if(Find (i) ==i &&Vis[i]) { thecnt++; the          } the       } -       if(cnt>1){ inprintf"The door cannot be opened.\n"); the          Continue; the       } About       inttmp=0; the       intp[ -]; the        for(intI=0;i< -; i++){ the          if(A[i]!=b[i] &&Vis[i]) { +p[tmp]=i; -tmp++; the          }Bayi       } the       if(tmp==0){ theprintf"Ordering is possible.\n"); -          Continue; -       } the       if(tmp==2&& (a[p[0]]-b[p[0]]==1&& b[p[1]]-a[p[1]]==1|| b[p[0]]-a[p[0]]==1&& a[p[1]]-b[p[1]]==1)){ theprintf"Ordering is possible.\n"); the             Continue; the       } -printf"The door cannot be opened.\n"); the    } the     return 0; the}
View Code

HDU 1116 Play on Words (Oraton Road)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.