60分求解
查看原帖
60分求解
545516
Habseligkeit楼主2022/12/13 11:18
#include<bits/stdc++.h>

using namespace std;

vector<int> edge[1010];
int n , m , p , q , res , ans;
int vis[1010] , t[1010];

void dfs(int x , int res) {
	vis[x] = 1;
	if(x == q) {
		ans = min(ans , res);
		vis[x] = 0;
		return;
	}
	int l = edge[x].size();
	for(int i = 0; i < l; i ++) {
		if(!vis[edge[x][i]])
		    dfs(edge[x][i] , res + 1);
	}
	vis[x] = 0;
}

int main() {
	scanf("%d %d" , &n,  &m);
	for (int i = 1; i <= m; i ++) {
		int u , v;
		scanf("%d %d" , &u , &v);
		edge[u].push_back(v);
		edge[v].push_back(u);
	}
	
	scanf("%d %d" , &p , &q);
	
	ans = 1e9 + 10;
	dfs(p , 1);
	
	printf("%d\n" , ans - 2);
}
2022/12/13 11:18
加载中...