| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1365278 | mrasool1665 | September (APIO24_september) | C++20 | 0 ms | 0 KiB |
//MRasol kheyri
//Iran -> Khorasan -> ferdows -> Baghestan
//15/2/1405
//vasate azmoonima...
#include<bits/stdc++.h>
//#include<september.h>
using namespace std ;
typedef long long ll ;
#define el '\n'
const ll maxn = 1e6 + 100 ;
ll n , m , mark[maxn] , ind[maxn] , mx ;
vector<ll> adj[maxn] ;
void dfs(ll u){
mark[u] = 1 ;
mx = max(mx,ind[u]) ;
for(auto v : adj[u]){
if(!mark[v]){
dfs(v) ;
}
}
return ;
}
int solve(int N , int M , vector<int> F , vector<vector<int>> S){
n = N , m = M ;
fill(mark,mark+n,0) ;
for(ll i = 0 ; i < n ; i++){
adj[i].clear() ;
}
for(ll i = 1 ; i < n ; i++){
adj[F[i]].push_back(i) ;
}
for(ll j = 0 ; j < n-1 ; j++){
ind[S[i][j]] = -1 ;
}
for(ll i = 0 ; i < m ; i++){
for(ll j = 0 ; j < n-1 ; j++){
ind[S[i][j]] = max(ind[S[i][j]],j) ;
}
}
ll ans = 0 ;
ll i = 0 ;
while(i < n-1){
mx = i ;
for(ll j = i ; j <= mx ; j++){
if(!mark[S[0][j]]){
dfs(S[0][j]) ;
}
}
ans++ ;
i = mx+1 ;
}
return ans ;
}