Untitled

 avatar
unknown
plain_text
2 years ago
1.1 kB
4
Indexable
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#define MAX_SIZE 1000
#define INF 10000
using namespace std;

class Edge{
public:
	int x;
	int y;
};

Edge graph[200];
int visited[100];
int N, M;
int mi;

void DFS(int u, bool diquaTwo,int V){
	if(u == 1 && diquaTwo){
		if(mi > V){
			mi = V;
		}
		return;
	}
	if(V > mi){
		return;
	}
	++visited[u];
	for(int i = 0; i < M; ++i){
 		if(visited[graph[i].y] == 0 && u == graph[i].x){
			if(graph[i].y == 2){
				DFS(graph[i].y, true, V+1);
			}
			else{
				DFS(graph[i].y, diquaTwo, V+1);
			}
		}
		else if(visited[graph[i].y] == 1 && u == graph[i].x){
			DFS(graph[i].y, diquaTwo, V);
		}
	}
	--visited[u];
}

int main(){
	//freopen("input.txt", "r", stdin);
	int T;
	cin >> T;
	for(int tc = 1; tc <= T; ++tc){
		cin >> N >> M;
		for(int i = 0; i < M; ++i){
			int x, y;
			cin >> graph[i].x >> graph[i].y;
		}
		for(int i = 0; i < N; ++i){
			visited[i] = 0;
		}
		mi = INF;
		DFS(1, false, 1);
		cout << mi << endl;
	}

	return 0;
}
Editor is loading...