2025.05.11
/*#include <stdio.h>
int graph[501][501]={};
int see[501]={},visit[501]={};
int n,start,cnt=0;
void dfs(int x)
{
visit[x]=1;
//printf("%d(%d)->",x,start);
for(int i=1;i<=n;i++)
{
if(graph[x][i]==1&&visit[i]==0)
{
graph[start][i]=1;
graph[i][start]=-1;
dfs(i);
}
}
return ;
}
int main()
{
int i,j,k=0,m,a,b;
scanf("%d %d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d %d",&a,&b);
graph[a][b]=1;
}
for(i=1;i<=n;i++)
{
start=i;
//printf("%d:\n",i);
dfs(i);
//printf("\n");
graph[i][i]=1;
for(j=1;j<=n;j++)
{
visit[j]=0;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
for(j=1;j<=n;j++)
{
if(graph[i][j]!=0)
{
k++;
}
}
if(k==n)
{
cnt++;
}
//printf("see[%d]=%d\n",i,k);
k=0;
}
for(j=1;j<=n;j++)
{
//printf("%d ",graph[i][j]);
}
//printf("\n");
}
printf("%d",cnt);
return 0;
}*/
// x 번 학생이 자신이 몇 번째인지 알 수 있는지?
// -> 자신이 볼 수 있는 학생 수 + 자신을 볼 수 있는 학생 수 + 1 == n
//int s; // main에서 s=i; 해두고
//void dfs(int x)
//{
// v[x]=1;
// for(i=1;i<=n;i++)
// {
// if(arr[x][i]==1&& v[i]==0)
// {
// arr[s][i]=1;
// dfs(i);
// }
// }
//}
#include <stdio.h>
int arr[25][25];
void dfs(int i, int j) // arr[i][j]와 연결된 모든 노드 dfs
{
if(i==-1||j==-1||i==n+1||j==n+1||arr[i][j]==0)
{
return ;
}
else
{
(변수)++;
}
arr[i][j]=0;
dfs(i+1,j);
dfs(i-1,j);
dfs(i,j+1);
dfs(i,j-1);
// if(i+1<=n && ==1)
// {
// dfs(i+1,j);
// }
// if(arr[i-1][j]==1)
// {
//
// }
// if()
// {
//
// }
// if()
// {
//
// }(X)
}
int main()
{
int~~
}





#include <stdio.h>
int arr[25][25]={};
int n;
void dfs(int i, int j) // arr[i][j]와 연결된 모든 노드 dfs
{
if(i==-1||j==-1||i==n+1||j==n+1||arr[i][j]==0)
{
return ;
}
else
{
cnt[]++;
}
arr[i][j]=0;
dfs(i+1,j);
dfs(i-1,j);
dfs(i,j+1);
dfs(i,j-1);
}
int main()
{
int
}