From fd45ac5f0e53b730e92ead1ca5dc5311d7354af8 Mon Sep 17 00:00:00 2001 From: Apollonius <111100170+mahaoming2022@users.noreply.github.com> Date: Sat, 30 Mar 2024 15:39:23 +0800 Subject: [PATCH] Create level.cpp --- PJ/2013/level.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 PJ/2013/level.cpp diff --git a/PJ/2013/level.cpp b/PJ/2013/level.cpp new file mode 100644 index 0000000..12730cd --- /dev/null +++ b/PJ/2013/level.cpp @@ -0,0 +1,50 @@ +#include + +using namespace std; + +int n,m; +int a[1024],b[1024]; +int linker[1023][1024]; +int mem[1023]; +bool vis[1024]; + +int dp(int u) +{ + int& ans=mem[u]; + if(ans!=-1) + return ans; + ans=0; + for(int v=1;v<=n;++v) + if(linker[u][v]) + ans=max(ans,dp(v)+1); + return ans; +} + +int main() +{ + freopen("level.in","r",stdin); + cin>>n>>m; + for(int i=1;i<=m;++i) + { + memset(vis,0,sizeof(vis)); + int si; + cin>>si; + for(int j=1;j<=si;j++) + { + cin>>a[j]; + vis[a[j]]=1; + } + int ti=0; + for(int j=a[1];j<=a[si];++j) + if(!vis[j]) + b[++ti]=j; + for(int u=1;u<=si;++u) + for(int v=1;v<=ti;++v) + linker[a[u]][b[v]]=1; + } + memset(mem,-1,sizeof(mem)); + int ans=0; + for(int i=1;i<=n;++i) + ans=max(ans,dp(i)); + cout<