@[linyukun](/user/574859) 加了读入输出优化,不开 $O_2$ 能卡过。
```
#include<bits/stdc++.h>
using namespace std;
int n,m,ru[1001],a[1001][1001],s,k,cnt=-1,st,e;
bool vis[1001];
queue<int>q;
void read(int &p)
{
p = 0;
int k = 1;
char c = getchar();
while (c < '0' || c > '9')
{
if (c == '-')
{
k = -1;
}
c = getchar();
}
while (c >= '0' && c <= '9')
{
p = p * 10 + c - '0';
c = getchar();
}
p *= k;
return;
}
void write_(int x)
{
if(x < 0)
{
putchar('-');
x = -x;
}
if(x>9)
{
write_(x/10);
}
putchar(x%10+'0');
}
void writesp(int x)
{
write_(x);
putchar(' ');
}
void writeln(int x)
{
write_(x);
putchar('\n');
}
int main(){
read(n),read(m);
for(int i=0;i<m;i++){
memset(vis,0,sizeof(vis));
read(s);
for(int j=0;j<s;j++){
read(k);
if(j==0)st=k;
if(j==s-1)e=k;
vis[k]=1;
}
for(int j=st;j<=e;j++){
if(!vis[j]){
for(int z=st;z<=e;z++){
if(vis[z]&&a[z][j]==0){
a[z][j]=1;
ru[j]++;
}
}
}
}
}
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++){
a[0][i]=1;
ru[i]++;
}
q.push(0);
vis[0]=1;
while(!q.empty()){
cnt++;
while(!q.empty()){
int x=q.front();
for(int i=1;i<=n;i++){
if(a[x][i]&&vis[i]==0){
ru[i]--;
}
}
q.pop();
}
for(int i=1;i<=n;i++){
if(ru[i]==0&&vis[i]==0){
vis[i]=1;
q.push(i);
}
}
}
writeln(cnt);
return 0;
}
```
by cn_ryh @ 2023-03-03 11:38:34
@[linyukun](/user/574859) [提交记录 无$O_2$](https://www.luogu.com.cn/record/103492341)
by cn_ryh @ 2023-03-03 11:39:52
```cpp
cin,cout
```
改成```cpp
scanf,printf
```
试试
by _Adolf_Hitler_ @ 2023-03-03 12:09:27
@[ryh2007316](/user/458193) 谢谢老哥![](//图.tk/c)
by linyukun @ 2023-03-03 12:37:19
@[JODAN_POOLE](/user/931106) 不行的,先试的这个方法,反而会多0.02秒
by linyukun @ 2023-03-03 12:38:18
@[cn_ryh](/user/458193) 这题标签里本来就有$O_2$ ,你手动开不开都一样,都会自动开
by Allen_yang @ 2023-05-12 16:40:25
@[Allen_yang](/user/683768) QwQ....但是我手动 $O2$ 过了,不开没过....
by cn_ryh @ 2023-05-12 16:42:41
@[cn_ryh](/user/458193) 6
by Allen_yang @ 2023-05-12 16:43:57
@[Allen_yang](/user/683768) 啊...不对,不开过了./..
by cn_ryh @ 2023-05-12 16:44:08