01/10/2018, 11:02

Tô màu cho đỉnh đồ thị

mấy anh cho e hỏi sao mà code này trong phần main nó sai ạ. khi e kiểm tra từng cái thì kết quá nó thấy đúng đúng ạ

#include<stdio.h>
typedef struct{
	int m,n;
	int A[100][100];
}Graph;
// tao ma tran 
void init_graph(Graph *G, int n, int m){
	G->n=n;
	G->m=m;
	for(int i=1;i<G->n;i++)
		for(int j=1;j<=G->n;j++)
		G->A[i][j]=0;
}
// them cung  ke 

void add_edge(Graph *G,int x, int y){
	G->A[x][y]=1;
	G->A[y][x]=1;
}
int conflict=0;
int color[100];
// to mau 
void to_mau(Graph *G,int v, int c){
	int i,j;
	if(color[v]==-1){
		color[v]=c;
		for(int y=1;y<=G->n;y++)
			if(G->A[i][j]=0)
			to_mau(G,y,!c);}
			else 
				if(color[v]!=c)
				conflict=1;
				
}


int main(){
	Graph G;
int n,m,v,c;
int A[100][100];
init_graph(&G,5,6);
add_edge(&G,1,2);
add_edge(&G,1,3);
add_edge(&G,1,5);
add_edge(&G,2,4);
add_edge(&G,3,4);
add_edge(&G,4,5);


for(int i=1;i<=G.n;i++){
	for(int j=1;j<=G.n;j++){
		printf("%d ",G.A[i][j]);}
		printf("
");
	to_mau(&G,n,c);	}
	
		conflict=0;
	for(int i=1;i<=G.n;i++)
		color[i]=c;
			
	printf("conflict = %d
",conflict);
		for(int i=1;i<=G.n;i++)
		printf("color[%d]=%d
",i,color[i]);
	return 0;
	
}
Lương Thế Hải viết 13:19 ngày 01/10/2018

Bạn đang làm gì với code này? bạn đã debug chưa? Lỗi như thế nào?

Nguyen Ca viết 13:03 ngày 01/10/2018

đang dùng thuật toán gi, bài này có 3 cách lận

Phạm Nguyễn Cao Duyên viết 13:08 ngày 01/10/2018

dạ duyệt theo chiều sâu anh

Phạm Nguyễn Cao Duyên viết 13:09 ngày 01/10/2018

dạ nó chạy được . Nhưng không in tới cái ma trận cái là đúng. còn qua cái tô màu cái nó sai.

Bài liên quan
0