TÌM ĐỊNH KỀ

 TÌM ĐỊNH KỀ





#include<stdio.h>
typedef int ElementType;
typedef struct{
	ElementType data[100];
	int size;
}List;
void make_null(List *L ){
	L->size=0;
}
void push_list(List *L, ElementType x){
	L->data[L->size]=x;
	L->size++;
}
#define N 500
typedef struct{
	int n;
	int A[N][N];
}Graph;
// Khoi tao do thi vo huong khong khuyen
void init_graph(Graph *G, int n){
	G->n=n;
	int i,j;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			G->A[i][j]=0;
}
void add_graph(Graph *G, int x, int y){
	G->A[x][y]=1;
//	G->A[y][x]=1;
}
int adjacent(Graph *G, int x, int y){
	return (G->A[x][y]!=0 || G->A[y][x]!=0);
}
int degree(Graph *G, int x){
	int deg = 0,i;
	for(i=1;i<=G->n;i++)
		if(G->A[x][i]!=0)
			deg++;
	return deg;
}
List neighbors(Graph *G, int x){
	List L;
	make_null(&L);
	int i;
	for(i=1;i<=G->n;i++)
		if(adjacent(G,x,i))
			push_list(&L,i);
	return L;
}
int main(){
	Graph G;
	int i,j,n,u,v,m;
	freopen("dt.txt","r",stdin);
	scanf("%d%d",&n,&m);
	init_graph(&G,n);
	for(i=1;i<=m;i++){
		scanf("%d%d",&u,&v);
		add_graph(&G,u,v);
	}
//	int a[100][100];
//	for(i=1;i<=G.n;i++){
//		for(j=1;j<=G.n;j++)
//			scanf("%d",&a[i][j]);
//	}
//	for(i=1;i<=G.n;i++){
//		for(j=1;j<=G.n;j++)
//			if(a[i][j]==1){
//				add_graph(&G,i,j);
//			}
//	}
//	printf("IN MA TRAN\n");
//	for(i=1;i<=n;i++){
//		for(j=1;j<=n;j++)
//			printf("%d ",G.A[i][j]);
//		printf("\n");
//	}
	List L1,L2;
	int x,y;
	int dem=0;
	scanf("%d%d",&x,&y);
	L1=neighbors(&G,x);
	L2=neighbors(&G,y);
	for(i=0;i<L1.size;i++){
		for(j=0;j<L2.size;j++)
			if(L1.data[i]==L2.data[j])
				dem++;
	}
	printf("%d",dem);
	return 0;
}