92pts求调,悬关
查看原帖
92pts求调,悬关
960206
topcsa楼主2024/10/25 19:22
#include <bits/stdc++.h>
using namespace std;
int n, m;
int h[310];
vector<int> g[310];
int mx = 0, mxr;
int vis[310];
void dfs(int u, int fa) {
	vis[u] = 1;
	for (auto v : g[u]) {
		if (!vis[v]) {
			dfs(v, u);
		}
	} 
}
int main()
{
	int cs = 0;
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		cin >> h[i];
		if (mx < h[i]) {
			mxr = i;
			mx = h[i];
		}
	}
	for (int i = 1; i <= n; i++) {
		if (h[i] == mx) {
			cs++;
		}
	}
	if (cs > 1) {
		cout << "Non\n";
		return 0;
	}
	for (int i = 1; i <= m; i++) {
		int a, b;
		cin >> a >> b;
		if (h[a] > h[b]) {
			g[a].push_back(b);
		}
		else if (h[b] > h[a]) {
			g[b].push_back(a);
		}
	}
	dfs(mxr, 0);
	int ans = 0;
	int tp;
	for (int i = 1; i <= n; i++) {
		if (!vis[i]) {
			tp = i;
			ans++;
		}
	}
	if (ans > 1) cout << "Non\n";
	else cout << "Oui, j\'ai trouve la solution.\n" << mxr << '\n';
	return 0;
}

2024/10/25 19:22
加载中...