작성
·
159
0
#include <stdio.h>
#include <vector>
using namespace std;
int n, m;
int answer = 0;
void solution(vector<vector<int>> & arr, vector<int> & visited, int current){
if(current == n){
answer++;
return;
}
visited[current - 1] = 1;
for(int i=0;i<n;i++){
if(arr[current-1][i]!=0 && visited[i] == 0){
visited[i] = 1;
solution(arr, visited, i+1);
visited[i] = 0;
}
}
visited[current - 1] = 0;
}
int main(void){
//freopen("input.txt", "rt", stdin);
int start, end;
scanf("%d %d", &n, &m);
vector<vector<int>> arr(n, vector<int>(n));
vector<int> visited(n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d %d", &start, &end);
arr[start-1][end-1] = 1;
}
}
solution(arr, visited, 1);
printf("%d", answer);
return 0;
}
안녕하세요. 다름이 아니라 수업 듣기 전 짠 코드를 이용해 채점 프로그램을 실행시키면 모든 case에 대해 time limit가 나와서 질문드립니다. 위 코드에 어떤 문제가 있을까요? 채점파일 내에 있는 input.txt 입력받고 실행시키면 전부 정답으로 나옵니다.
답변 1
0
안녕하세요^^
입력을 잘 못 받고 있습니다. 아래 처럼 간선 정보를 입력받아야 합니다.
for(int i=0;i<m;i++){
scanf("%d %d", &start, &end);
arr[start-1][end-1] = 1;
}