码迷,mamicode.com
首页 > 其他好文 > 详细

luogu_1341 无序字母对

时间:2017-09-21 21:05:49      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:getch   n+1   main   using   names   space   etc   scan   getc   

#include <cstring>
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int n,ans[100010],cnt,in[60];
vector<int> G[60];
bool vis[60],answer,dis[60][60],oula;
char word[]={‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘,‘G‘,‘H‘,‘I‘,‘J‘,‘K‘,‘L‘,‘M‘,‘N‘,‘O‘,‘P‘,‘Q‘,‘R‘,‘S‘,‘T‘,‘U‘,‘V‘,‘W‘,‘X‘,‘Y‘,‘Z‘,
‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘,‘i‘,‘j‘,‘k‘,‘l‘,‘m‘,‘n‘,‘o‘,‘p‘,‘q‘,‘r‘,‘s‘,‘t‘,‘u‘,‘v‘,‘w‘,‘x‘,‘y‘,‘z‘};

char getc(){
    char c;
    c=getchar();
    while(1){
        if(‘a‘<=c && c<=‘z‘ || (‘A‘<=c && c<=‘Z‘))return c;
        c=getchar();
    }
}

void make(){
    for(int i=1;i<=n;i++){
        char u,v;
        int u1,v1;
        u=getc(); v=getc();
        if(‘A‘<=u && u<=‘Z‘)u1=u-‘A‘;
        else u1=u-‘a‘+26;
        if(‘A‘<=v && v<=‘Z‘)v1=v-‘A‘;
        else v1=v-‘a‘+26;
        in[u1]++; in[v1]++;
		vis[u1]=vis[v1]=1;
        G[u1].push_back(v1); G[v1].push_back(u1);
    }
}

bool check(){
	int sum=0;
	for(int i=0;i<52;i++)if(in[i]%2==1)sum++;
	if(sum!=2 && sum)return false;
	return true;
}

void dfs(int u){
	ans[++cnt]=u;
	for(int i=0;i<G[u].size();i++){
		int v=G[u][i];
		if(cnt==n+1)return;
		if(!dis[u][v]){
			dis[u][v]=1; dis[v][u]=1;
			dfs(v);
			dis[u][v]=0; dis[v][u]=1;
		}
	}
	if(cnt!=n+1)cnt--;
}

int main(){
    scanf("%d",&n);  
    make();
	if(!check()){puts("No Solution"); return 0;}
	for(int i=0;i<52;i++)sort(G[i].begin(),G[i].end());
	int start=0;
    for(int i=0;i<52;i++)
		if(vis[i]){start=i; break;}
    for(int i=0;i<52;i++)
    	if(in[i]%2==1){start=i; break;}
	dfs(start);
	for(int i=1;i<=cnt;i++)putchar(word[ans[i]]);
	puts("");
    return 0;
}

  

luogu_1341 无序字母对

标签:getch   n+1   main   using   names   space   etc   scan   getc   

原文地址:http://www.cnblogs.com/codetogether/p/7570648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!