数据结构王道P234第二题

复制代码
#include<iostream>
using namespace std;
int visit[MAxsize];
int color[MaxSize];//1表示红,2表示白; 
bool dfs(Graph G, int i){
	visit[i]=1;
	ArcNode *p;
    bool flag=1;
	for(p=G.vertices[i].firsrarc; p ; p=p->next){
		int j=p->adjvex;
		if(!visit[j]){//如果没访问过,j就涂上相反颜色,继续递归涂色 
			if(color[i]==1)color[j]=2;
			else color[j]=1;
			flag=flag&&dfs(G, j); 
		}
		else{//如果访问过,判断j与i相邻点颜色,是否相同,不相同说明涂失败了,直接返回false;如果不同,不用管继续递归涂色 
			if(color[j]==color[i]){
				return false;
			}
		}
	}
	return flag;
} 

int main()
{
	color[1]=1;//将第一个点染红
	bool flag=bfs(G, 1); 
	return 0;
}
相关推荐
慕容青峰4 分钟前
【LeetCode 1925. 统计平方和三元组的数目 题解】
c++·算法·leetcode
冰西瓜6006 分钟前
动态规划(一)算法设计与分析 国科大
算法·动态规划
TL滕11 分钟前
从0开始学算法——第十一天(字符串基础算法)
笔记·学习·算法
哈哈xcpc-439912 分钟前
天梯赛题解(Python和C++解法)
开发语言·c++·python
咔咔咔的13 分钟前
1925. 统计平方和三元组的数目
c++
zmzb010329 分钟前
C++课后习题训练记录Day47
开发语言·c++
roman_日积跬步-终至千里1 小时前
【计算机算法与设计(10)】习题:苹果买卖问题——分治法的经典应用
算法
deepdata_cn1 小时前
模型预测控制(MPC)算法
算法
独自破碎E1 小时前
如何用最短替换让字符串变平衡?
java·开发语言·算法·leetcode
papership1 小时前
【C++类的基本概念与定义】
开发语言·c++