MLE
查看原帖
MLE
1118614
I_Love_DS楼主2025/1/14 19:21

si\sum s_i 为多少啊。。。

#include <bits/stdc++.h>

using namespace std;

const int N = 5e3 + 50;

int n, m, k, p, d[N], dist[N];
int q[N], front = 1, rear = 0;
vector <int> e[N];

void topo() {
	while (front <= rear) {
		int u = q[front++];
		for (auto v : e[u]) {
			dist[v] = max(dist[v], dist[u] + 1);
			if (!--d[v]) q[++rear] = v;
		}
	}
}

int main() {
	memset(dist, 255, sizeof(dist));
	scanf("%d%d%d", &n, &k, &p);
	for (int i = 1; i <= p; i++) {
		int x;
		scanf("%d", &x);
		q[++rear] = x;
		dist[i] = 0;
	}
	scanf("%d", &m);
	for (int i = 1; i <= m; i++) {
		int x, c;
		scanf("%d%d", &x, &c);
		if (!dist[x]) continue;
		d[x] = c;
		while (c--) {
			int y;
			scanf("%d", &y);
			e[y].push_back(x);
		}
	}
	topo();
	printf("%d\n", dist[k]);
	return 0;
}
2025/1/14 19:21
加载中...