有两个tle怎么弄啊,怎么用记忆化搜索啊
查看原帖
有两个tle怎么弄啊,怎么用记忆化搜索啊
819682
Exile_Code楼主2023/6/5 19:08
#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include <algorithm>
#include <string>
#include <vector>
#include <list>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <unordered_set>
#include <unordered_map>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>

vector<set<int>>tree;
vector<bool>node;
int max_num = 0;
void dfs(int n) {
	node[n] = 1;
	max_num = max(max_num, n);
	for (auto a : tree[n]) {
		if (!node[a])
			dfs(a);
	}
}
int main() {
	int n, m; cin >> n >> m;
	tree.resize(n + 1);
	for (int i = 0; i < m; i++) {
		int a, b;
		scanf("%d %d", &a, &b);
		tree[a].insert(b);
	}
	node.resize(n + 1);
	for (int i = 1; i <= n; i++) {
		node.clear();
		node.resize(n + 1);
		max_num = 0;
		node[i] = 1;
		dfs(i);
		cout << max_num << " ";
	}

	return 0;
}
2023/6/5 19:08
加载中...