Untitled

 avatar
unknown
plain_text
2 years ago
1.2 kB
4
Indexable
#include <iostream>
using namespace std;
int n,m;
int kq;
int duongdi[21][21];
int visit1[21];
int visit2[21];
int kq1,kq2;
void go1(int st, int dem){
	if(visit1[st] > 1) return;
	if(visit1[2] == 1){
		if(dem < kq1) kq1 = dem;
		return;
	}
	for(int i = 1; i <= n; i++){
		if(duongdi[st][i] == 1){
			visit1[i]++;
			go1(i, dem + 1);
		    visit1[i]--;
		}
	}
}
void go2(int st, int dem){
	if(visit2[st] > 1 ) return;
	if(visit2[1] == 1){
		if(dem < kq2) kq2 = dem;
		return;
	}
	for(int i = 1; i <= n; i++){
		if(duongdi[st][i] == 1){
			visit2[i]++;
			go2(i, dem + 1);
			visit2[i]--;
		}
	}
}
int main(){
	freopen("input.txt","r",stdin);
	int T;
	cin >> T;
	for(int tc = 1; tc <= T; tc++){
		cin >> n >> m;
		for(int i = 1; i<= n; i++){
			visit1[i] = 0;
			visit2[i] = 0;
		}
		visit1[1] = 1;
		visit2[2] = 1;
		for(int i = 1; i <= n; i++){
			for(int j = 1; j <= n; j++){
				duongdi[i][j] = 0;
			}
		}
		for(int i = 0; i < m; i++){
			int x, y;
			cin >> x;
			cin >> y;
			duongdi[x][y] = 1;
		}
		kq1 = kq2 = 1000;
		go1(1,1);
		go2(2,1);
		cout << kq1 + kq2<< endl;
	}
	return 0;
}
Editor is loading...