//일단은 스택으로 받지 말고 어떻게 해야할까악아가아가아강까아가아가아가아가아가까아가라아가아까아가아가아ㅏ가앋가까악까악ㄲ까악까아가까아가아가아각
/*
#include <stdio.h>
#include <string.h>
int main()
{
char k[100001]={};
int n=0,m=0,i;
gets(k);
for(i=0;k[i]!=0;i++){
if(k[i]=='('){
if(k[i+1]==')') {
n+=m; i++;
}
else{
m++;
}
}
else{
m--;
n++;
}
}
printf("%d",n);
}
https://devuna.tistory.com/32 : dfs bfs 참고
dfs : 재귀, 스택 (깊이우선탐색)
bfs : 큐 (너비 우선 탐색)
그래프 형태 ( 인접행렬 - 연결상태를 나타내는 이차원 배열, 방문여부 - 일차원 배열)
map 형태 (이차원 배열 형태 )
1. 바이러스 dfs로 구현 (완)
2. 바이러스 bfs로 구현 (하는중)
3. map유형 dfs 구현 (주요 과제)
#include <stdio.h>
int arr[101][101]={},n,m;
int visited[101]={}; //2. 방문여부 저장 배열
void dfs(int node) // node에서 dfs
{
int i;
visited[node]=1;
//방문한 적 없으면서 연결된 곳에서 또 dfs
for(i=1;i<=n;i++)
{
if(arr[node][i]==1 && visited[i]==0){
dfs(i);
}
}
}
int main()
{
int i, j, k, l;
scanf("%d %d",&n,&m);
//1. 인접행렬 생성
for(i=1;i<=m;i++){
scanf("%d %d",&k,&l);
arr[k][l]=1;
}
dfs(1);
int cnt=0;
for(i=2;i<=n;i++) cnt+=visited[i];
printf("%d",cnt);
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("%d ",arr[i][j]);
}
printf("\n");
}
}
*/



