题意:

  其实就是让你判断一个图是否为树,要求不能有孤立的点(没有这中情况),且只能有1个连通图,且边数+1=点数,且每个点都有边(不可能只有1个点出现)。

思路:

  有可能出现连续的4个0,也就是有测试例子是完全没有点的,也没有边,要打印Yes!记录下所有点(去重),记录下每个点的度数,如果有n个点,n-1条边,且每点都是有边连着的,再判断其只有一个连通图就行了。因为只有n-1条边,所以当只有一个连通图时,必不会有环的产生。

判断是否只有一个连通图的方法:

(1)BFS(可用)

(2)DFS(有10万点,可能爆栈)

(3)并查集(可用)

(4)prim、kruscal生成一个树,所有点和所有边都要用上。

(5)Dijkstra、Bellman-Ford  求单点到其他点的路径长,如果有两点的路径为无穷则证明有点不可达。

 #include <bits/stdc++.h>
using namespace std;
const int N=;
const int mod=0x7f7f7f7f;
int num[N];
/*
仅仅靠边数+点数来断定是否为树,应该是错的。测试数据:
1 2 3 4
3 5 4 5
0 0
*/
int main()
{
freopen("e://input.txt", "r", stdin);
int n, a, b;
while()
{
memset(num,,sizeof(num));
int cnt=, siz=;
while(scanf("%d%d",&a,&b),a+b>)
{
if(!num[a])
{
siz++; //点数
num[a]++;
}
if(!num[b])
{
siz++;
num[b]++;
}
cnt++; //边数
}
if(a==- && b==-) break;
if(!cnt||cnt+==siz) printf("Yes\n");
else printf("No\n"); }
return ;
}

AC的错误代码

 #include <bits/stdc++.h>
using namespace std;
const int N=, mod=0x7f7f7f7f;
unordered_map<int,int> mapp;//将点编号映射到从1开始的连续的编号
int pre[N];
int find(int a) //查
{
int tmp=a;
while(pre[tmp]!=tmp) tmp=pre[tmp]; //找到a的祖先
pre[a]=tmp; //改其祖先
int p;
while(a!=tmp) //从a到tmp所经过的点,改其全部祖先
{
p=pre[a];
pre[a]=tmp;
a=p;
}
return tmp;
} void joint(int a,int b) //并
{
a=find(a);
b=find(b);
if(a!=b) pre[a]=b;
} void init() //初始化pre,不知道点个数,所以只能这样了
{
for(int i=; i<=N; i++) pre[i]=i;
} int istree(int n) //每个房间都是连着的
{
for(int i=; i<=n; i++) find(i); //防止漏网之鱼
for(int i=; i<n; i++) if(pre[i]!=pre[i+]) return ; //不是同个领导的
return ;
} int main()
{
freopen("e://input.txt", "r", stdin);
int n, a, b;
while()
{
memset(pre,,sizeof(pre));
mapp.clear();
init(); //初始化pre[]祖先列表
int cnt=, j=; while(scanf("%d%d",&a,&b),a>&&b>)
{
//cout<<"123"<<endl;
if(!mapp[a]) mapp[a]=++j; //重新编号
if(!mapp[b]) mapp[b]=++j; joint(mapp[a], mapp[b]);
cnt++; //边数
}
if(a==- || b==-) break; if(!cnt) printf("Yes\n"); //坑
else if(cnt+!=j) printf("No\n");//边多了肯定不行
else
{
if(istree(j)) printf("Yes\n");
else printf("No\n");
}
}
return ;
}

AC代码(并查集实现)

HDU 1272 小希的迷宫 (水题)的更多相关文章

  1. HDU 1272小希的迷宫(裸并查集,要判断是否构成环,是否是连通图)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    ...

  2. hdu 1272 小希的迷宫(并查集+最小生成树+队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)     ...

  3. hdu 1272 小希的迷宫 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 第二条并查集,和畅通工程的解法类似.判断小希的迷宫不符合条件,即有回路.我的做法是,在合并两个集 ...

  4. HDU 1272 小希的迷宫 (并查集)

    小希的迷宫 题目链接: http://acm.hust.edu.cn/vjudge/contest/123393#problem/L Description 我们的小伙伴Bingo身为大二学长,他乐于 ...

  5. hdu 1272 小希的迷宫【并查集】

    <题目链接> 小希的迷宫 Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的 ...

  6. hdu 1272 小希的迷宫(java实现)

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  7. HDU——1272小希的迷宫(并查集+拓扑排序)

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  8. HDU - 1272 小希的迷宫 并查集判断无向环及连通问题 树的性质

    小希的迷宫 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一 ...

  9. HDU 1272 小希的迷宫 并查集

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  10. hdu 1272 小希的迷宫

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

随机推荐

  1. HDU 2121 Ice_cream’s world II 不定根最小树形图

    题目链接: 题目 Ice_cream's world II Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...

  2. struts2 ,web.xml中配置为/*.action,运行报错Invalid <url-pattern> /*.action in filter mapp

    首先,修改成: <filter-mapping>  <filter-name>struts2</filter-name>  <url-pattern>/ ...

  3. 输入一个链表,输出该链表中倒数第k个结点。

    // test14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  4. Webbrowser 取消下载提示框

    在使用Webbrowser抓取网页信息时,碰到需要下载文件,这时需要用户介入操作,如何避免: 首先引进 [DllImport("urlmon.dll", CharSet = Cha ...

  5. Apache Options Indexes FollowSymLinks之讲解

    禁止显示Apache目录列表-Indexes FollowSymLinks 如何修改目录的配置以禁止显示 Apache 目录列表. 缺省情况下如果你在浏览器输入地址: http://localhost ...

  6. 【WCF--初入江湖】13 实战

    13 实战 在线升级 using System; using System.Collections.Generic; using System.ComponentModel; using System ...

  7. SPOJ LCS 后缀自动机

    用后缀自动机求两个长串的最长公共子串,效果拔群.多样例的时候memset要去掉. 解题思路就是跟CLJ的一模一样啦. #pragma warning(disable:4996) #include< ...

  8. POJ 1731

    #include<iostream> #include<string> #include<algorithm> using namespace std; int m ...

  9. 一个很好的php分词类库

    PHPAnalysis源程序下载与演示: PHP分词系统 V2.0 版下载 | PHP分词系统演示 | PHPAnalysis类API文档   原文连接地址:http://www.phpbone.co ...

  10. HUSTOJ(转发)

    来源:http://blog.csdn.net/xiajian2010/article/details/12954855 缘起 大四了,快毕业了,所以想准备点LAMP的知识和经验.刚好实验室里有人在搞 ...