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;
}
Bài liên quan
Bạn đang làm gì với code này? bạn đã debug chưa? Lỗi như thế nào?
đang dùng thuật toán gi, bài này có 3 cách lận
dạ duyệt theo chiều sâu anh
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.