HDU 1272 小希的迷宫
来源:互联网 发布:spss数据显著性分析 编辑:程序博客网 时间:2024/06/08 16:56
整个文件以两个-1结尾。
6 8 5 3 5 2 6 45 6 0 08 1 7 3 6 2 8 9 7 57 4 7 8 7 6 0 03 8 6 8 6 45 3 5 6 5 2 0 0-1 -1
YesYesNo
//判断所给图中是否有环,并且是否连通
代码:
package 并查集;
import java.util.*;
public class 小希的迷宫 {
static int[] f=new int[100005];
static int[] vis=new int[100005];//标记
static boolean flag;
static void init(){
for(int i=0;i<=100000;i++){//初始化
f[i]=i;
vis[i]=0;
}
}
static int find(int x)
{
if(f[x]==x) return x;
return f[x]=find(f[x]);
}
static void union(int x,int y)
{
int t1=find(x);
int t2=find(y);
if(t1!=t2)
f[t2]=t1;//指向t1
else
flag=false; //有共同的父节点,说明成环,不符合条件
}
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
int n,m,i;
while(scan.hasNext()){
init();//记得初始化
flag=true;
n=scan.nextInt();
m=scan.nextInt();
if(n==-1 && m==-1)break;
if(n==0 && m==0){ //只输入0 0也符合条件
System.out.println("Yes");
continue;
}
vis[n]=vis[m]=1;//标记,用来统计几棵树
union(n,m);
while(scan.hasNext()){
n=scan.nextInt();
m=scan.nextInt();
if(n==0 && m==0)break;
vis[n]=1;
vis[m]=1;
union(n,m);
}
int num=0;
for(i=0;i<=100000;i++){
if(f[i]==i && vis[i]==1)num++;
if(num>1){ //大于一棵树,不符合条件
flag=false;
break;
}
}
if(flag) System.out.println("Yes");
else System.out.println("No");
}
}
}
- 小希的迷宫 hdu 1272
- HDU 1272 小希的迷宫
- hdu 1272 小希的迷宫
- hdu 1272 小希的迷宫
- hdu 1272 小希的迷宫
- HDU-1272-小希的迷宫
- HDU 1272 小希的迷宫
- [tree]hdu 1272 小希的迷宫
- HDU 1272 小希的迷宫
- Hdu 1272 小希的迷宫
- HDU-1272:小希的迷宫
- HDU 1272 小希的迷宫
- hdu 1272 小希的迷宫
- hdu 1272 小希的迷宫
- HDU 1272 小希的迷宫
- HDU 1272 小希的迷宫
- hdu 1272 小希的迷宫
- hdu 1272 小希的迷宫
- 我的Qt学习之路——标准对话框
- Node实现简单的表单+图片上传+路由
- 随机抽取名字
- 简单ioc模拟-使用工厂方法
- win10环境下,解决javac不是内部或外部命令
- HDU 1272 小希的迷宫
- Interactive Data Visualization for the Web, 2nd Edition.pdf 英文原版 免费下载
- java日常学习:异常和finally块
- 【Unity】图形渲染优化、渲染管线优化、图形性能优化
- 三元表达式
- springmvc 执行@Test报错
- 二叉树的一系列基本操作
- Set集合TreeSet学习(Set集合学习二)
- 使用Gradle构建Android应用