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 ...
随机推荐
- Java环境变量搭建(Linux环境)
1. 下载解压JDK压缩包 例如:解压到 /opt/jdk1.7.0_80 下 2. 添加环境变量到 /etc/profile 文件中 vi /etc/profile 在文件末尾追加如下内容: exp ...
- SQL SERVER 2012数据库自动备份的方法
SQL SERVER 2012数据库自动备份的方法 为了防止数据丢失,这里给大家介绍SQL SERVER2012数据自动备份的方法: 一.打开SQL SERVER 2012,如图所示: 服务器类型:数 ...
- servlet从服务器磁盘文件读出到浏览器显示,中文乱码问题,不要忘记在输入流和输出流都要设置编码格式,否则一个地方没设置不统一就会各种乱码
package com.swift; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOE ...
- Finders Keepers-freecodecamp算法题目
Finders Keepers 1.要求 写一个 function,它遍历数组 arr,并返回数组中第一个满足 func 返回值的元素. 举个例子,如果 arr 为 [1, 2, 3],func 为 ...
- C++ 容器与继承
如果容器类型定义为基类类型,那么虽然可以把派生类装进容器中,但是不能通过容器访问派生类自己的public成员,派生类将会倍切掉,只保留派生类的基类部分: 如果把容器定义为派生类类型,那么不能把基类类型 ...
- 【dp】奶牛家谱 Cow Pedigrees
令人窒息的奶牛题 题目描述 农民约翰准备购买一群新奶牛. 在这个新的奶牛群中, 每一个母亲奶牛都生两个小奶牛.这些奶牛间的关系可以用二叉树来表示.这些二叉树总共有N个节点(3 <= N < ...
- python笔记-for循环的方法
#!/usr/bin/env python #-*- coding:utf-8 -*- ''' for 语句 格式: for 变量名 in 集合: 语句 逻辑:按顺序取"集合"中的 ...
- Redux百行代码千行文档
接触Redux不过短短半年,从开始看官方文档的一头雾水,到渐渐已经理解了Redux到底是在做什么,但是绝大数场景下Redux都是配合React一同使用的,因而会引入了React-Redux库,但是正是 ...
- JZOJ 3462. 【NOIP2013模拟联考5】休息(rest)
3462. [NOIP2013模拟联考5]休息(rest) (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Detailed ...
- HDU - 1973 - Prime Path (BFS)
Prime Path Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...