文章列表
 
您正在查看 "并查集" 分类下的文章

2010-09-08 22:48
题意:

给定一个无向图,一共n个点,请编写一个程序实现三种操作:
E x 从原图中删除连接x节点的所有边。
D x y 从原图中删除连接x,y节点的边。
Q x y 询问x,y节点是否连通。

输入只有一组测试数据:
第一行两个数n,m(5<=n<=40000,1<=m<=100000)
接下来m行,每行一对整数 x y (x,y<=n),表示x,y之间有边相连。保证没有重复的边。
接下来一行一个整

 
2010-06-19 0:46

算法描述:贪心思想+并查集实现

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn=1001;
int   n, k;
int   tot; //表示边总数
struct Point
{
int x, y;
}point[maxn];
struct Edge
{
double dis;
int u, v;
}edge[maxn*maxn];
int     father[maxn];
void init()
{
for (int i=1; i

 
2010-05-05 17:21
http://acm.hdu.edu.cn/showproblem.php?pid=1829
题意:假定两只飞虫关系表,如果A,B表示A仰慕B,问是否存在同性的飞虫互相仰慕(也就是同性恋问题)
幻灯片 8
n
算法描述:并查集的应用:设置一个变量表示每个节点要根的距离。具体算法在此不描述:
#include <iostream>
using namespace std;
c
 
2010-05-05 13:46

http://acm.hdu.edu.cn/showproblem.php?pid=1856

简单的并查集集数:

一开始我把总人数的父结点都初始化了一遍(大牛BS一下吧),果断TLE,想了想,把有关系的每个结点离散化一下(再次BS),后来想到只用涉及到的结点,于是在输入的时候就可以进行初始化(不再BS),OK,敲代码完毕。提交...WA。。发现maxnum 初始化的时候有问题,我初始化为0,如果n=0,那么答案至少也应该是

 
2010-03-09 19:45

//并查集; 对于不需要的查询的点不需要每次都做更新,当要查询某一点的时候再对该点进行更新操作。

并查集的路径压缩很好的解释了这一点,定义up[i]为当前在i节点上的元素的个数。sum[i]表示i节点下面的的元素个数,sum在这里只对于根节点(即最上面一个元素)有用,询问某个点的时候,用sum[root]-up[i] - 1

(要减1是因为要把自身减掉,root表示和i节点一个stack的根节点。即该stack最上面一个元素.

#include

 
2010-03-09 11:17

//此题如此之简单而我确A得如此辛苦

WA原因:

1:第一次写maxn的时候把maxn开到1001想到从数组下标为0开始记录。后来写着觉得还是不怎么好。就从下标为1开始写,就没有改maxn,于是乎就贡献了几次WA,在discuss里面发现问题后把数组改大一点就AC了,浪费我这么多时间, 吸取教训

#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
const int maxn = 1011;
int father[maxn];
double x[maxn];
double y[maxn];
bool fix

 
 
   
 
 
文章存档
 
     
 
最新文章评论
  

条理很清晰
 

什么是多重队列?跪求!!!
 

orz ...
 

请问这个代码,错在什么地方了?一直是 running time error 我是不是少考虑了什么条
 

#include<iostream> #include<algorithm> #include<string.h> using namespace std;
   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu