T两个点,求助大佬优化
查看原帖
T两个点,求助大佬优化
719201
INT_1024楼主2022/11/29 21:24
#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
int num1, num2;
vector<int> cnt[100005];
int max_anser[100005];
bool flag[100005];
void Find(int nums) {
	memset(flag, false, sizeof flag);
	queue<int> q;
	q.push(nums);
	while (!q.empty()) {
		int t = q.front();
		for (int i = 0; i < cnt[t].size(); i++) {
			if (flag[cnt[t][i]] == false) {
				q.push(cnt[t][i]);
				flag[cnt[t][i]] = true;
				max_anser[nums] = max(max_anser[nums], cnt[t][i]);
			}
		}
		q.pop();
	}
}
int main(){
	cin >> num1 >> num2;
	for (int i = 1; i <= num1; i++) {
		max_anser[i] = i;
	}
	for (int i = 0; i < num2; i++) {
		int start, end;
		cin >> start >> end;
		cnt[start].push_back(end);
	}
	for (int i = 1; i <= num1; i++)
		Find(i);
	for (int i = 1; i <= num1; i++)
		cout << max_anser[i] << " ";
	return 0;
}
2022/11/29 21:24
加载中...