求助,#8 #9 MLE
查看原帖
求助,#8 #9 MLE
163798
vv123楼主2020/8/11 17:37
#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 3;
int n, m, s, t, ans, num, tmp, f[N], vis[N], in[N];
queue<int> q;
vector<int> g[N];
inline void toposort() {
	for (int i = 1; i <= n; i++) if (!in[i]) q.push(i), f[i] = 1;
  while (q.size()) {
  	int u = q.front(); q.pop(); 
  	for (int i = 0; i < g[u].size(); i++) {
  		int v = g[u][i];
  		f[v] = f[u] + 1;
  		ans = max(ans, f[v]);
  		if(!--in[v]) q.push(v);
		}
 	}
}
int main() {
	cin >> n >> m;
	for (int i = 1; i <= m; i++) {
		memset(vis, 0, sizeof(vis));
		cin >> num;
		for (int i = 1; i <= num; i++) {
			cin >> tmp;
			vis[tmp] = 1;
			if (i == 1) s = tmp;
			if (i == num) t = tmp;
		}
		for (int i = 1; i <= n; i++) 
	    for (int j = s + 1; j < t; j++)
	      if (vis[i] && !vis[j]) g[i].push_back(j), in[j]++;		 
	}
	toposort();
	cout << ans;
	return 0;
}
2020/8/11 17:37
加载中...