prim #include<stdio.h> #include<string.h> #define inf 0x3f3f3f3f ][]; ],lowc[]; ],int n){ ; memset(vis,,sizeof(vis));//全部初值为0表示没有访问过: vis[]=; ;i<=n;i++) lowc[i]=G[][i]; ;i<=n;i++){ minc=inf; p=-; ;j<=n;j++){ &&lowc[j]<minc)…
N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树.   Input 第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量.(2 <= N <= 1000, 1 <= M <= 50000) 第2 - M + 1行:每行3个数S E W,分别表示M条边的2个顶点及权值.(1 <= S, E <= N,1 <= W <= 10000) Output 输出最小生成树的所有边的权值之和. Input示例 9 14 1 2 4 2 3 8 3 …
N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树.   Input 第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量.(2 <= N <= 1000, 1 <= M <= 50000) 第2 - M + 1行:每行3个数S E W,分别表示M条边的2个顶点及权值.(1 <= S, E <= N,1 <= W <= 10000) Output 输出最小生成树的所有边的权值之和. Input示例 9 14 1 2 4 2 3 8 3 …
N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树. 输入 第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量.(2 <= N <= 1000, 1 <= M <= 50000) 第2 - M + 1行:每行3个数S E W,分别表示M条边的2个顶点及权值.(1 <= S, E <= N,1 <= W <= 10000) 输出 输出最小生成树的所有边的权值之和. 输入样例 9 14 1 2 4 2 3 8 3 4 7 4 5 9 5…
1212 无向图最小生成树 N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树. 收起 输入 第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量.(2 <= N <= 1000, 1 <= M <= 50000) 第2 - M + 1行:每行3个数S E W,分别表示M条边的2个顶点及权值.(1 <= S, E <= N,1 <= W <= 10000) 输出 输出最小生成树的所有边的权值之和. 输入样例 9 14 1 2 4 2 3…
http://www.51nod.com/Challenge/Problem.html#problemId=1212 代码 #include<bits/stdc++.h> using namespace std; #define ull unsigned long long #define ll long long ; int par[maxn]; int rank1[maxn]; void f(int n) //初始化 { ;i<n;i++) { par[i]=i; rank1[i]=…
51Nod: 1212 无向图最小生成树. link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1212 1212 无向图最小生成树 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树.   Input 第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量.(2 <= N <= 1000, 1 <= M &…
1212 无向图最小生成树 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树.   Input 第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量.(2 <= N <= 1000, 1 <= M <= 50000) 第2 - M + 1行:每行3个数S E W,分别表示M条边的2个顶点及权值.(1 <= S, E <= N,1 <= W <…
/* 题目大意:有两个不同的黑帮,开始的时候不清楚每个人是属于哪个的! 执行两个操作 A a, b回答a, b两个人是否在同一帮派,或者不确定 D a, b表示a, b两个人不在同一个帮派 思路:利用并查集将相同帮派的人合并到一起! a ,b 不在同一个城市,那么 a, 和mark[b]就在同一个城市, b 和 mark[a]就在同一个城市! */ #include<iostream> #include<cstring> #include<cstdio> #define…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2818 题意:有N个块,每次有两个操作: M x y表示把x所在的那一堆全部移到y所在的那一堆的下方. C x 询问在x下方有多少个方块. 用并查集,在路径压缩的时候后序更新当前块下有多少个其他块,注意这里“当前块下”其实和并查集是相反的,也就是父亲节点在儿子下面. 需要额外维护一个量:某一堆的块的总数,这个在unite操作的时候,如果不是同一个根,直接将一部分加到另一部分上就可以. /* ━━━━━…