随笔分类 - 数据结构--并查集
Colored Sticks(彩色棒)
摘要:poj 2513题目大意:给一些彩色棒,看能不能组成一个解决:trie+无向图欧拉路(偶数结点度数为0或者2)clude <iostream> #include <cstring>#include <cstdio>using namespace std;struct node{ int next[26]; int wordNo;};int top;int num;node tree[2000000];short adj[510010];int data[510010];void init(){ top=1; num=0; memset(data,-1,si.
阅读全文
小希的迷宫
摘要:hdoj 1272题目大意:给出一个图,注意这是个有向图(小希希望任意两个房间有且仅有一条路径可以相通(除非走了回头路)),由于这个错误调试了一上午解决:与poj 1308 一模一样,用并查集判断图的连通性,统计结点和边的个数来判断是否有回路#include <iostream>#include <set>#include <utility>using namespace std;int num[100005];bool mark[100005];int Max;set<pair<int,int> > s;int find(int x
阅读全文
The Suspects(流感疑似病人)
摘要:poj 1611题目大意:0号学生是流感疑似病人,找出与0接触及与0间接接触的人(与0接触的人接触的人)的个数解决:并查集,找出与0同在一个集合的所有元素的个数#include <iostream>#include <cstring>using namespace std;int num[30005];bool mark[30005];int find(int x){ if(num[x]<0)return x; return num[x]=find(num[x]);}void merge(int a,int b){ int fa=find(a); int fb=f
阅读全文
Ubiquitous Religions(无处不在的宗教)
摘要:poj 2524并查集基础题,但是由于刚开始不熟悉,还是错了好几次题目大意:有学生学号1--n,给你一些学生之间的关系,即属于同一宗教的学生, 找出共有多少不同的宗教数解决:就是一个并查集的最基础题目,写个并查集就过了#include <stdio.h>#include <string.h>int num[50005];int n,m;int find(int x)//查找{ if(num[x]<0)return x; return num[x]=find(num[x]);}void merge(int a,int b)//合并{//就是因为对合并算法不熟悉,导致
阅读全文
Is It A Tree
摘要:poj 1308题目大意:判断给定的数对是否构成一棵树,解决:并查集 1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 int num[10005]; 5 bool outdegree[10005]; 6 bool mark[10005];//标记该结点是树的一个结点 7 int find(int x)//并查集的查找 8 { 9 if(num[x]<0)return x;10 return num[x]=find(num[x]);11 }12 bool merge(int a,
阅读全文
浙公网安备 33010602011771号