首页 > 其他分享 >hdu 1232通畅工程

hdu 1232通畅工程

时间:2024-05-06 13:23:27浏览次数:28  
标签:index hdu 1232 int 通畅 lda nextInt sc public

与hdu1213一样简单并查集。

点击查看代码
import java.util.Scanner;

public class hdu1232 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			int n = sc.nextInt();
			if (n==0) {
				break;
			}
			int m = sc.nextInt();
			int[] lda = new int[n];
			for (int i = 0; i < lda.length; i++) {
				lda[i] = i;				
			}
			for (int i = 0; i < m; i++) {
				int a = sc.nextInt()-1;
				int b = sc.nextInt()-1;
				merge(a, b, lda);
			}
			int res = 0;
			for (int i = 0; i < lda.length; i++) {
				if (i==lda[i]) {
					res++;
				}
			}
			System.out.println(res-1);	
		}
		sc.close();
	}
	public static int find(int a,int[] lda) {
		int index = a;
		while (lda[index]!=index) {
			index = lda[index];			
		}
		return index;
	}
	public static int[] merge(int a,int b,int[] lda) {
		int x = find(a, lda);
		int y = find(b, lda);
		if (x!=y) {
			lda[x] = y;
		}
		return lda;
	}
}

标签:index,hdu,1232,int,通畅,lda,nextInt,sc,public
From: https://www.cnblogs.com/xiaohuangTX/p/18174830

相关文章

  • hdu1213并查集
    第一种方法是定义每个数的老大是其自身,通过每次输入的两个数,找到它两的老大,比较大小,循环将所有大的那个老大改为小的那个数,最后输出有几个老大是其自身,案例都能过,提交就错,不知错哪了......点击查看代码importjava.util.Scanner;publicclasshdu1213{ publicstaticvoid......
  • windows密码存储以及hashdump所得信息解析
    1.windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文在Windows中密码通常不会以明文形式存储。系统会通过保存密码的哈希值来确保安全性。这个过程涉及到NTLM或Kerberos身份认证协议,它们负责加密存储密码。以下是存储过程的简要说......
  • 24/04/13 CF494C Helping People / HDU5866 Lucky E
    CF494C:题面翻译有一个长为\(n\)的数列,初始时为\(a_{1..n}\)。给你\(q\)个操作,第\(i\)个操作将\([l_i,r_i]\)内的数全部加一,有\(p_i\)的概率被执行。保证区间不会交错,即:\(\foralli,j\in[1,q],l_i\ler_i<l_j\ler_j\)或\(l_i\lel_j\ler_j\ler_i\)或\(l_j\le......
  • 20212325
    123456......
  • 20212324
    第一部分第二部分?问题一问题二剩下......
  • [hdu6647]Bracket Sequences on Tree 解题报告
    oj:https://gxyzoj.com/d/hzoj/p/3575因为自己的脑残原因,调了8个小时啊!!!切入正题Part1假定1为根,可以发现,如果u的两棵子树同构,则他们遍历的顺序不影响答案所以,就可以将子树按哈希值分类,这道题就变成了一个可重复组合问题,设\(f_i\)表示以1为根时i的方案数,\(a_i\)表示某一种哈......
  • HDU4787
    HDU4787来源网上找的。标签根号分治AC自动机题意给出两种操作:·+w表示学习一个新单词\(w\)。·?p表示询问段落\(p\)中有多少个子串是之前学习过的单词。字符串仅包含0和1,强制在线,多组数据。加密操作如下:对于每个出现的字符串,设\(lst\)为上一个询问的结果。给......
  • hdu1195 Open the Lock
    双向广搜的没写,这个是普通bfs,哪天改一下……#include<iostream>#include<algorithm>#include<string>#include<queue>#include<cstring>usingnamespacestd;intT,vis[10000];stringst,en;intdir[2]={-1,1};typedefstruct{ stringa;......
  • [题解]HDU1024 Max Sum Plus Plus
    HDU1024这道题是一道很巧妙的\(dp\)题(虽然优化成一维,可是究其本质算不算二维\(dp\)?如果有明白的麻烦在评论说一下多谢),在上一篇文章——线性\(dp\)模型中也提到过,因为其前身其实就是上一篇写到的「最大连续子段和」。只不过这一题问的不是一段,而是\(m\)段,所以较上一题我们的选择......
  • [HDU5396] Expression 题解
    每次合并两个数,做过石子合并的人都能看出来是区间dp。设状态\(dp_{i,j}\)表示区间\([i,j]\)中合并为一个数的所有情况之和。那么我们就可以枚举断点\(k\):\(b_k\)为\(+\):\([i,k]\)中的每种情况都要和\([k+1,j]\)中的每种情况产生一个贡献,所以总贡献为\(dp_{i,k}\ti......