良辰、 @ 2019-05-28 17:44:30
70分
RE
。。。
数组开的巨大都没用
呜呜呜qaq
求dalao帮忙看看趴(感谢感谢
#include<bits/stdc++.h>
#define maxn 4010
#define maxm 4010
#define maxn_maxm 2000010
using namespace std;
inline int read(){
int x=0,t=1; char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
if(ch=='-') t=-1,ch=getchar();
while(ch<='9'&&ch>='0') x=x*10+ch-48,ch=getchar();
return x*t;
}
int n,m;
int a[maxm];
struct Edge{
int next,to;
}edge[maxn_maxm];
int ans[maxn],maxn_ans;
int cnt,head[maxn_maxm];
bool vis[maxn],mapp[maxn][maxn];
int in[maxn];
int sum_now[maxn],tot;
void sortt(){
for(register int i=1;i<=n;++i){
if(in[i]==0){
sum_now[++tot]=i;
}
}
int qaq=1;
while(tot<n){
int flag=0;
for(register int i=qaq;i<=tot;++i){
int root=sum_now[i];
for(register int j=head[root];j;j=edge[j].next){
int v=edge[j].to; in[v]--;
if(in[v]==0){
flag++;
sum_now[tot+flag]=v;
ans[v]=ans[root]+1;
}
}
}
qaq=tot+1;
tot+=flag;
// cout<<1;
}
}
void add(int u,int v){
edge[++cnt].to=v;
edge[cnt].next=head[u];
head[u]=cnt;
}
int main()
{
n=read(); m=read();
for(int i=1;i<=n;++i) ans[i]=1;
for(register int i=1;i<=m;++i){
memset(vis,0,sizeof(vis));
int si=read();
for(register int j=1;j<=si;++j){
a[j]=read();
vis[a[j]]=1;
}
for(register int j=a[1];j<=a[si];++j){
if(vis[j]) continue;
for(register int k=1;k<=si;++k){
if(mapp[a[k]][j]==0){
mapp[a[k]][j]==1;
++in[j];
add(a[k],j);
}
}
}
}
// memset(vis,0,sizeof(vis));
sortt();
for(int i=1;i<=n;i++){
maxn_ans=max(maxn_ans,ans[i]);
// cout<<maxn_ans<<" ";
}
printf("%d\n",maxn_ans);
return 0;
}
by BinDir0 @ 2019-05-28 18:20:29
@良辰、 捕捉dalao!!!
by BinDir0 @ 2019-05-28 18:20:40
@良辰、 大师球!
by 言和YanHe @ 2019-05-28 19:05:32
捕捉大佬 @恨妹不成穹 !
by BinDir0 @ 2019-05-28 19:20:02
@HFOI菠萝 dalao qaq
by kampf @ 2019-05-28 19:32:16
@良辰、 1,我天真的以为是您数据卡的不好,于是用了长者的生日和各种玄学数字,然后gg 2,我看不懂您的代码(我太菜了对不起qwq),建议你看看李煜东的算法竞赛进阶指南,我是按照那个打的(管理别棕我qwq) 3,非t即r,也许是别的问题???(蒟蒻只知道r是因为数组开小了)
by 言和YanHe @ 2019-05-28 19:32:29
@恨妹不成穹 您的提交数还差一就是66ccff666了呢
by BinDir0 @ 2019-05-28 19:41:24
@HFOI菠萝 wow真的呀qaq谢谢提醒
by 良辰、 @ 2019-05-28 19:41:47
@g36c qwq好趴我看看