蒟蒻样例没过,求调
查看原帖
蒟蒻样例没过,求调
520338
Luckies楼主2023/1/5 15:22

rt,拓扑排序

#include<bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5;
int n, m, g[N][N], a[N], in[N], dis[N], maxi;
bool vis[N];
queue<int> q;
int main()
{
	cin >> n >> m;
	for (int i = 1; i <= m; i++)
	{
		int s;
		cin >> s;
		memset(vis, 0, sizeof(vis));
		for (int j = 1; j <= s; j++)
		{
			cin >> a[i];
			vis[a[i]] = true;
		}
		for (int j = a[1]; j <= a[s]; j++)
			if (!vis[j])
				for (int k = 1; k <= s; k++)
					if (g[i][a[k]] == 0)
					{
						g[i][a[k]] = 1;
						in[a[k]]++;
					}
	}
	for (int i = 1; i <= n; i++)
	{
		if (in[i] == 0)
		{
			q.push(i);
			dis[i] = 1;
		}
	}
	while (!q.empty())
	{
		int x = q.front();
		q.pop();
		for (int i = 1; i <= n; i++)
		{
			if (g[x][i] == 1)
			{
				in[i]--;
				if (in[i] == 0)
					q.push(i);
				dis[i] = max(dis[i], dis[x] + 1);
			}
		}
	}
	for (int i = 1; i <= n; i++)
		maxi = max(maxi, dis[i]);
	cout << maxi;
	return 0;
}
2023/1/5 15:22
加载中...