HDU-1181 变形课(多种方式,好题)
首先想到的是并查集,然后WA。。。原因在这,我第一次敲的是Find(1) == Find(12)来作为可以成功的条件,实际上这样是不行的,比方说 bell 和 mail实际上是不满足条件的,可以理解为有向边,合并的时候要注意是首尾相接,可以改为Find(1) == 12 或者 Find(12) == 1,具体取决于并查集父子节点的合并关系,其次可以使用弗洛伊德算法或者DFS都可以。
并查集:
#include<iostream>
#include<cstring>
#include<cstdio> using namespace std;
const int N = + ;
int pre[N]; int Find(int x){
return pre[x] == x? x : (pre[x] = Find(pre[x]));
} void Merge(int x, int y){
x = Find(x), y = Find(y);
if(x != y) pre[x] = y; //这里要注意, 如果是pre[y] = x, 则要Find(12) == 1
}
char ch[N*];
int main(){
while(scanf("%s", ch) == ){
for(int i = ; i < ; i++) pre[i] = i;
while(ch[] != ''){
int x = ch[] - 'a';
int y = ch[strlen(ch) - ] - 'a';
Merge(x, y);
scanf("%s", ch);
}
printf("%s\n",Find() == ?"Yes.":"No.");
}
return ;
}
#include<iostream>
#include<cstring>
#include<cstdio> using namespace std;
const int N = + ;
const int INF = 0x3f3f3f3f;
int mat[N][N]; void Flory(){
for(int k = ; k < ; k++)
for(int i = ; i < ; i++)
for(int j = ; j < ; j++) mat[i][j] = min(mat[i][j], mat[i][k] + mat[k][j]);
} void Init(){
for(int i = ; i < ; i++)
for(int j = ; j < ; j++) mat[i][j] = (i!=j)?INF:;
} char ch[];
int main(){
while(scanf("%s", ch) == ){
Init();
while(ch[] != ''){
int x = ch[] - 'a';
int y = ch[strlen(ch)-] - 'a';
mat[x][y] = ; //有向边
scanf("%s", ch);
}
Flory();
printf("%s.\n",mat[][] < INF?"Yes":"No");
}
return ;
}
DFS:
#include<iostream>
#include<cstring>
#include<cstdio> using namespace std;
const int N = + ;
bool dp[N][N],can; void DFS(int x){
if(can) return ;
if(can = (x == )) return ;
for(int i=; i < ; i++)
if(dp[x][i]){
dp[x][i] = false;
DFS(i);
dp[x][i] = true;
}
}
void Init(){
for(int i = ; i < ; i++)
for(int j = ; j < ; j++) dp[i][j] = false;
can = false;
}
char ch[];
int main(){
while(scanf("%s", ch) == ){
Init();
while(ch[] != ''){
int x = ch[] - 'a';
int y = ch[strlen(ch)-] - 'a';
dp[x][y] = true;
scanf("%s", ch);
}
DFS( );
printf("%s.\n", can?"Yes":"No");
}
}
HDU-1181 变形课(多种方式,好题)的更多相关文章
- hdu 1181:变形课(搜索水题)
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submis ...
- hdu 1181 变形课
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submis ...
- [ACM] hdu 1181 变形课
变形课 Problem Description 呃......变形课上Harry碰到了一点小麻烦,由于他并不像Hermione那样可以记住全部的咒语而任意的将一个棒球变成刺猬什么的,可是他发现了变形咒 ...
- hdu 1181 变形课(dfs)
Problem Description 呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个 ...
- HDU 1181 变形课 (深搜)
题目连接 Problem Description 呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形 ...
- HDU 1181.变形课-并查集
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submis ...
- 杭电(hdu)1181 变形课
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submi ...
- hdoj - 1181 变形课
Problem Description 呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个 ...
- 变形课 HDU - 1181 【floyd传递闭包水题】
呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规律:如果咒语是以a开头b结尾的一个 ...
随机推荐
- 043:Django使用原生SQL语句操作数据库
Django使用原生SQL语句操作数据库 Django配置连接数据库: 在操作数据库之前,首先先要连接数据库.这里我们以配置 MySQL 为例来讲解. Django 连接数据库,不需要单独的创建一个连 ...
- C++的命令行参数(gflag)
参考:https://www.cnblogs.com/myyan/p/4699940.html 这是一款google开源的命令行参数解析工具,支持从环境变量.配置文件读取参数(可以用gflags代替配 ...
- echart-折线图,数据太多想变成鼠标拖动和滚动的效果?以及数据的默认圈圈如何自定义圆圈的样式
1.数据太多怎么办???想拖拽,想滑动 dataZoom: [ { type: 'slider', } ] dataZoom: [ { type: 'inside', }] 两种功能都需要,还想调样 ...
- 面试题常考&必考之--js闭包特性和优缺点 (外加小例子)
当内部函数被返回到外部并保存时,一定会产生闭包.闭包会产生原来的作用域链,不释放. 闭包,可以理解为,写一个函数,然后产生闭包的这种现象. 概念: 基础: 主要是:add reduce 被返回 ...
- CSS画心形和蛋形
一.心形 使用transform-origin属性实现设置不同的点为原点 1.改变元素基点transform-origin(transform-origin是变形原点,原点就是元素绕着旋转或变形的点) ...
- js自执行函数前加个分号是什么意思?
1.(function(){alert("1")})()(function(){alert("2")})()报错 2.(function(){alert(&qu ...
- 区间查询异或最大值——cf1100F,hdu6579
cf1100F是静态区间查询最大值,有离线的解法,我感觉线段树或者莫队应该都能过 更优秀的解法可以在线并支持修改,可以解决hdu6579,即依次插入每个数,pos[i][j]表示在插第i个数时第j个基 ...
- BZOJ 1029 建筑抢修(贪心堆)
原题代号:BZOJ 1029 原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1029 原题描述: 建筑抢修 小刚在玩JSOI提供的一个称之为 ...
- Hello Kotlin! Kotlin学习资料
今天谷歌搞了条大新闻.宣布Kotlin成为android开发的一级(One Class)语言,这说明谷歌是被甲骨文恶心坏了,打算一步步脱离掉java或者说是甲骨文公司的束缚了.原先网上大家还琢磨着会不 ...
- React Native商城项目实战15 - 首页购物中心
1.公共的标题栏组件TitleCommonCell.js /** * 首页购物中心 */ import React, { Component } from 'react'; import { AppR ...