90分TLE求助!!!
查看原帖
90分TLE求助!!!
1098465
yohoofu2011楼主2024/8/13 16:23
#include<bits/stdc++.h>
using namespace std;
struct zjq {
	int a, b;
};
int n, m, x, y, z,  mins, num, o, tx, ty, l, ans, s1, t, maxa;
int s[20007];
bool vis[20007], tf;
vector<int>vec[20007];
void dij() {
	memset(s, 0x3f3f3f3f, sizeof s);
	s[1] = 0;
	for (int i = 1; i <= n; i++) {
		mins = -1;
		for (int j = 1; j <= n; j++) {
			if ((mins == -1 || s[j] < s[mins]) && !vis[j]) {
				mins = j;
			}
		}
		maxa = max(maxa, s[mins]);
		vis[mins] = true;
		for (int j = 0; j < vec[mins].size(); j++) {
			if (vis[vec[mins][j]])continue;
			if (s[vec[mins][j]] > s[mins] + 1) {
				s[vec[mins][j]] = s[mins] + 1;
			}
		}
	}
	return;
}
int main() {
	cin >> n >> m;
	for (int i = 1; i <= m; i++) {
		scanf("%d%d",&x,&y);
		vec[x].push_back(y);
		vec[y].push_back(x);
	}
	dij();
	for (int i = 1; i <= n; i++) {
		if (s[i] == maxa && !tf) {
			cout << i << ' ' << maxa << ' ';
			tf = true;
		}
		if (s[i] == maxa) {
			ans++;
		}
	}
	cout<<ans;
	return 0;
}
2024/8/13 16:23
加载中...