spoj.pl/problems/PT07Y/
Can somebody tell me why is it going beyond limits and the correct rectification.
[code]
#include<stdio.h>
#include<stdlib.h>
int vis[10010]={0};
char *V [20010]={0};
struct edge
{
int u;
int v;
};
struct edge E[20010]={0,0};
void dfs(int x,int m,int n){
vis[x]=1; //printf("%d ",x);
for(int i=1;i<=n;i++){
if((V[x][i] ==1 || V[i][x] ==1) && vis[i]==0)
dfs(i,m,n);
}
}
int main()
{
int N,M,i,m;
scanf("%d %d",&N,&M);
m=M; // save M
if(M != N-1){
printf("NO");
return 0;
}
E[0].u= -1;
E[0].v= -1;
for(i=1;i<=20010;i++)
V[i]=(char*) calloc(sizeof(char),20010);
i=1;
while(M--){
scanf("%d %d",&E[i].u , &E[i].v);
V[E[i].u][E[i].v] = 1;
i++;
}
dfs(1,m,N);
//printf("\n"); //printf("\n%d",search(1,2,m));
//for(i=1;i<=N;i++) printf("%d",vis[i]);
/*check vis */
for(i=1;i<=N;i++){
if(vis[i]==0) {printf("NO"); return 0;}
}
printf("YES");
return 0;
}
[/code]