判图的连通性(dfs,并查集)


一.无向图

欧拉回路:每个顶点度数都是偶数

欧拉路:所有点度数为偶数,或者只有2个点度数为奇数

当然判连通性


hdu 1878 欧拉回路 两种判连通的方法


dfs


#include 
#include
#include
#include
using namespace std;
#define N 1010
int degree[N],n,m;
bool visit[N];
vectoredge[N];
void dfs(int point){
	int i,j,p;
	visit[point]=1;
	for(i=0;i


并查集:

#include 
#include
#include
#include
using namespace std;
#define N 1010
int degree[N],n,m;
vectoredge[N];
int father[N];
int find(int x){
	while(x!=father[x])
		x=father[x];
	return x;
}
void unite(int a,int b){
	father[b]=find(a);
}
int main(int argc, char** argv) {
    int i,j,a,b;
    while(scanf("%d",&n)!=EOF&&n){
        scanf("%d",&m);
        for(i=1;i<=n;i++){
            degree[i]=0;
            edge[i].clear();
            father[i]=i;
        }
        for(i=0;i






你可能感兴趣的:(ACM-ICPC,图论)