seyhu2000   4년 전

고수님들 시간초과가 발생하는데 어떤부분에서 문제 인지 모르겠어요


도움 부탁드려요~~

dj910401   4년 전

인접 배열 대신 인접 리스트로 작성하시면 됩니다.

그리고 if(adj[cur][i]=1 && visit[i]==0) 에서 adj[cur][i]=1 도 adj[cur][i]==1로 고치셔야합니다.

seyhu2000   4년 전

인접리스트로 입력값 받으려면 어떻게 해야 해요?

고수님~~

dj910401   4년 전

 저의 경우에는 이렇게 입력 받았습니다.

 

저도 허접이라 자세한 내용은 검색을 추천드립니다 ㅎㅎ


seyhu2000   4년 전

예전에 했을때는 시간초과가 발생하지 않았는데


오늘 하니 시간초과가 발생했습니다.


소스는 동일한거 같은데 뭐가 이상한지 모르겠어요~~~

dj910401   4년 전

아하 찾았습니다.


while(!q.empty());

옆에 ; 를 빼주시면 됩니다.

seyhu2000   4년 전

정말감사합니다^^

seyhu2000   4년 전

안녕하세요 궁금한게 있는게 벡터로 받을때 아래 두개를 넣은게 무방향 그래프라서 이렇게 받는거죠??

 vt[a].push_back(b);
 vt[b].push_back(a);


제가 벡터를 잘 몰라서 그러는데 보통 배열이라고 하면 int vt[3];으로 선언하면 int형 크기가 3인 배열 vt이고 개별 요소로 접근하려면 vt [2]=2이런식으로 int형 하나만 들어가는데 벡터로 하면 vt[2]={2,3,4} 이런식으로 들어갈수 있는건가요?


궁금해서 여쭤봤어요~

dj910401   4년 전

네 무방향이라 양쪽으로 넣어주었고


vector <vector<int>> vt 는

vector<int> 를 타입으로 가지는 vector vt를 선언하여 2차원 동적할당을 하는 것 입니다.

vt.resize(i); 나 vector <vector <int>> vt(i); 와 같이 vector<int>를 타입으로 가지는 컨테이너를 i개 동적할당 할 수 있습니다.

배열처럼 생각하자면 int arr[i][]; 의 모양인거죠.

이러한 벡터에 

vt[1].push_back(1);

vt[1].push_back(2);

vt[1].push_back(3);

을 해주면

vt[1] = { 1, 2, 3}을 가지게 되고 

이차원 배열처럼 vt[i][j] 로 접근할 수 있습니다.


허접이라 설명이 미흡하네요 죄송합니다 ㅠㅠ

댓글을 작성하려면 로그인해야 합니다.