hdu 4096 判断路径
思路:将每个关系当成一条有向边,查询时就判断之间存在路径。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<map>
#define Maxn 210
using namespace std;
map<string,int> g;
map<string,int> ver;
int head[Maxn*],vi[Maxn*],e;
struct Edge{
int u,v,next;
}edge[Maxn*Maxn*];
void add(int u,int v){
edge[e].u=u,edge[e].v=v,edge[e].next=head[u],head[u]=e++;
}
bool dfs(int u,int x)
{
int i,v;
vi[u]=;
if(u==x)
return true;
for(i=head[u];i!=-;i=edge[i].next){
v=edge[i].v;
if(vi[v]) continue;
if(dfs(v,x))
return true;
}
return false;
}
int main()
{
char str[],s1[Maxn],s2[Maxn],s3[Maxn],s4[Maxn],s5[Maxn],s6[Maxn];
int cnt,num,i,j,t,Ca=,u,v;
scanf("%d",&t);
getchar();
while(t--){
cnt=;
memset(vi,,sizeof(vi));
memset(head,-,sizeof(head));
e=;
g.clear();
ver.clear();
printf("Case #%d:\n",++Ca);
while(cin.getline(str,,'\n')){
int l=strlen(str);
if(str[l-]=='!'){
printf("\n");
break;
}
num=sscanf(str,"%s %s %s %s %s %s",s1,s2,s3,s4,s5,s6);
if(num==){
l=strlen(s3);
if(s3[l-]=='.'){
s3[l-]='\0';
if(s2[]=='a'){
if(!g[s1]) g[s1]=++cnt;
if(!g[s3]) g[s3]=++cnt;
u=g[s1];
v=g[s3];
}else{
if(!g[s1]) g[s1]=++cnt;
if(!ver[s3]) ver[s3]=++cnt;
u=g[s1];
v=ver[s3];
}
add(u,v);
}
else{
s3[l-]='\0';
if(!g[s2]) g[s2]=++cnt;
u=g[s2];
if(s1[]=='a'){
if(!g[s3]) g[s3]=++cnt;
v=g[s3];
}
else{
if(!ver[s3]) ver[s3]=++cnt;
v=ver[s3];
}
memset(vi,,sizeof(vi));
if(dfs(u,v)){
printf("Y");
}else {
printf("M");
}
}
}
else{
l=strlen(s6);
if(s6[l-]=='.'){
s6[l-]='\0';
if(s5[]=='a'){
if(!ver[s4]) ver[s4]=++cnt;
if(!g[s6]) g[s6]=++cnt;
u=ver[s4];
v=g[s6];
}else{
if(!ver[s4]) ver[s4]=++cnt;
if(!ver[s6]) ver[s6]=++cnt;
u=ver[s4];
v=ver[s6];
}
add(u,v);
}
else{
s6[l-]='\0';
if(s1[]=='c'){
if(!ver[s5]) ver[s5]=++cnt;
if(!ver[s6]) ver[s6]=++cnt;
u=ver[s5];
v=ver[s6];
}
else {
if(!ver[s5]) ver[s5]=++cnt;
if(!g[s6]) g[s6]=++cnt;
u=ver[s5];
v=g[s6];
}
memset(vi,,sizeof(vi));
if(dfs(u,v)){
printf("Y");
}else {
printf("M");
}
}
}
}
}
return ;
}
hdu 4096 判断路径的更多相关文章
- shell 判断路径
判断路径 ];then echo "找到了123" if [ -d /root/Desktop/text ] then echo "找到了text" else ...
- C# 判断路径和文件存在
1.判断路径是否存在,不存在则创建路径: if (!System.IO.Directory.Exists(@"D:\Export")) { System.IO.Directory. ...
- git 判断路径是否是 git 仓库
git 判断路径是否是 git 仓库 import subprocess repo_dir = "../path/to/check/" command = ['git', 'rev ...
- C# 判断路径是否存在
定义文件状态枚举:0-路径为空,1-存在文件,2-路径不为空,但文件不存在 public enum FileExsitStatus { NoPath=0, FileExsit=1, NoFile=2 ...
- Python --判断路径是否为目录或文件
os.path.isdir( ), os.path.isfile(),os.listdir( ), os.walk( ) 参考网址:https://blog.csdn.net/xxn_723911/a ...
- hdu 1756(判断点是否在多边形中)
传送门 题解: 射线法判定点是否在多边形内部: AC代码: #include<iostream> #include<cstdio> #include<cmath> ...
- PAT甲题题解-1122. Hamiltonian Cycle (25)-判断路径是否是哈密顿回路
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789799.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- 【HDU】6110 路径交(2017百度之星) 线段树+RMQ-LCA+树链的交
[题目]2017"百度之星"程序设计大赛 - 初赛(A) [题意]给定n个点的带边权树,m条编号1~m的路径,Q次询问编号区间[L,R]所有链的交集的长度.n<=500000 ...
- hdu 2108 Shape of HDU【判断多边形是否是凸多边形模板】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2108 http://acm.hust.edu.cn/vjudge/contest/view.action ...
随机推荐
- fread, fwrite - 二进制流的输入/输出
总览 (SYNOPSIS) #include <stdio.h> size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stre ...
- JoinQuant策略代码示例
总体回测前 ''' ================================================================================ 总体回测前 === ...
- 更新MySQL数据库( java.sql.SQLException: No value specified for parameter 1) 异常 解决方法
package com.swift; import java.io.File; import java.sql.Connection; import java.sql.PreparedStatemen ...
- java 程序设计第三次作业内容
第一题:输出结果是什么? System.out.println("5+5="+5+5); 第二题:输出结果是什么? int a=3,b; b=a++; sop("a=&q ...
- oracle常用运维sql语句
1.查询dblink语句 col owner for a20col db_link for a30col username for a20col host for a30set linesize 12 ...
- Mysql关闭和修改密码
数据库的关闭方法: 1.优雅的关闭数据库的方法:mysqladmin -uroot -p123456 shutdown 2.脚本关闭:/etc/init.d/mysqld stop 3.使用kill信 ...
- php - 去除php代码中的多余空格
<?php class Test{ public function test(){ $tmplContent = file_get_contents('./test.php'); $tmplCo ...
- 数据分析处理库Pandas——索引
显示DataFrame结构中的指定列 使用iloc索引 指定一行的信息 指定多行信息 备注:第[1,5)行信息. 指定行和列 备注:第[0,5)行中第[1,3)列信息. 使用loc索引 指定行信息 备 ...
- Flask初学者:配置文件
如果设置项比较少的话可以使用“app.config['param_name']=value”的形式直接使用,如果需要设置的参数比较多的话,可以单独新建一个配置文件用来存放配置信息,配置文件中的参数需大 ...
- poj2631 Roads in the North(求树的直径)
Roads in the North Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2941 Accepted: 144 ...