UVA - 10129 Play on Words
来源:互联网 发布:数据分析毕业论文题目 编辑:程序博客网 时间:2024/06/15 04:27
Play on Words
Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu
Description
dfs实现的欧拉回路,需要注意很多判断条件判断是不是回路
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
int visit[30], s[30][30], in[30], out[30];
char str[10000];
void dfs(int k);
int main()
{
int n, k1, k2;
scanf("%d", &n);
while(n--)
{
int m, num, f;
scanf("%d", &m);
memset(visit,0,sizeof(visit));
memset(s,0,sizeof(s));
memset(in,0,sizeof(in));
memset(out,0,sizeof(out));
while(m--)
{
scanf(" %s",str);
int l=strlen(str);
k1=str[0]-'a';
k2=str[l-1]-'a';
in[k1]++;
out[k2]++;
s[k1][k2]=1;
num=k1;
visit[k1]=1;
visit[k2]=1;
}
for(int i=0;i<26;i++)
{
in[i]=in[i]-out[i];
}
k1=k2=f=0;
for(int i=0;i<26;i++)
{
if(in[i]==-1)
{
k1++;
}
else if(in[i]==1)
{
k2++;
num=i;
}
else if(in[i]!=0)
{
f=1;
}
}
if(f==0)
{
if((k1==1&&k2==1)||(k1+k2==0))
{
dfs(num);
for(int i=0; i<26; i++)
{
f=f+visit[i];
}
}
else
{
f=1;
}
}
if(f!=0)
{
printf("The door cannot be opened.\n");
}
else
{
printf("Ordering is possible.\n");
}
}
return 0;
}
void dfs(int k)
{
visit[k]=0;
for(int i=0;i<26;i++)
{
if(visit[i]==1&&s[k][i]==1)
{
s[k][i]=0;
dfs(i);
}
}
return ;
}
#include <iostream>
using namespace std;
int visit[30], s[30][30], in[30], out[30];
char str[10000];
void dfs(int k);
int main()
{
int n, k1, k2;
scanf("%d", &n);
while(n--)
{
int m, num, f;
scanf("%d", &m);
memset(visit,0,sizeof(visit));
memset(s,0,sizeof(s));
memset(in,0,sizeof(in));
memset(out,0,sizeof(out));
while(m--)
{
scanf(" %s",str);
int l=strlen(str);
k1=str[0]-'a';
k2=str[l-1]-'a';
in[k1]++;
out[k2]++;
s[k1][k2]=1;
num=k1;
visit[k1]=1;
visit[k2]=1;
}
for(int i=0;i<26;i++)
{
in[i]=in[i]-out[i];
}
k1=k2=f=0;
for(int i=0;i<26;i++)
{
if(in[i]==-1)
{
k1++;
}
else if(in[i]==1)
{
k2++;
num=i;
}
else if(in[i]!=0)
{
f=1;
}
}
if(f==0)
{
if((k1==1&&k2==1)||(k1+k2==0))
{
dfs(num);
for(int i=0; i<26; i++)
{
f=f+visit[i];
}
}
else
{
f=1;
}
}
if(f!=0)
{
printf("The door cannot be opened.\n");
}
else
{
printf("Ordering is possible.\n");
}
}
return 0;
}
void dfs(int k)
{
visit[k]=0;
for(int i=0;i<26;i++)
{
if(visit[i]==1&&s[k][i]==1)
{
s[k][i]=0;
dfs(i);
}
}
return ;
}
0 0
- 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
- 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
- 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
- UVA - 10129 Play on Words
- UVA - 10129 Play on Words
- uva -10129 - Play on Words
- LCA
- 前端开发规范
- B - FatMouse's Speed
- 新建第一个Android程序
- VC 6.0常用控件使用方法介绍
- UVA - 10129 Play on Words
- Linux学习笔记--常用目录的作用
- Java序列化的几种方式以及序列化的作用
- Android面试一天一题——Activity考察点之启动模式
- 世界上最远的距离
- 欢迎使用CSDN-markdown编辑器
- Could Not Get the Value for Parameter compilerId for Plugin Execution
- Eclipse Errors running builder "Integrated External Tool Builder" on project
- Hadoop笔记二之java操作hdfs对象