Submission #1352550

#TimeUsernameProblemLanguageResultExecution timeMemory
1352550yyc000123PPP (EGOI23_ppp)C++20
0 / 100
192 ms58696 KiB
#include<bits/stdc++.h>
using namespace std ;
#define F first
#define S second
const int N = 2e5+5 ;
const int M = 2e5+5 ;
int n , m , nxt[M] , vis[M] , ans[M] , anst[M] , cnt[N] ;
vector<pair<int,int>> vp ;
vector<int> v[N] , nei[M] ;
map<int,int> mp ;

void dfs(int node){
    vis[node]=1 ;
    if(nxt[node]==-1) ans[node]=vp[node].F , anst[node]=m-node ;
    else if(anst[nxt[node]]>nxt[node]-node+mp[vp[node].F]) ans[node]=ans[nxt[node]] , anst[node]=anst[nxt[node]] ;
    else if(anst[nxt[node]]<nxt[node]-node+mp[vp[node].F]) ans[node]=vp[node].F , anst[node]=nxt[node]-node+mp[vp[node].F] ;
    else{
        if(ans[nxt[node]]<=vp[node].F) ans[node]=ans[nxt[node]] , anst[node]=anst[nxt[node]] ;
        else ans[node]=vp[node].F , anst[node]=nxt[node]-node+mp[vp[node].F] ;
    }
    mp[vp[node].F]+=nxt[node]-node ;
    if(anst)
    for(int i:nei[node]) dfs(i) ;
}

int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) ;
    cin >> n >> m ;
    vp.resize(m) ;
    for(int i=0 ; i<m ; i++){
        cin >> vp[i].F >> vp[i].S ;
        v[vp[i].F].push_back(i) ;
        v[vp[i].S].push_back(i) ;
    }
    for(int i=0 ; i<n ; i++) sort(v[i].begin(),v[i].end()) ;
    for(int i=0 ; i<m ; i++){
        int temp = upper_bound(v[vp[i].F].begin(),v[vp[i].F].end(),i)-v[vp[i].F].begin() ;
        if(temp==v[vp[i].F].size()) nxt[i]=-1 ;
        else nxt[i]=v[vp[i].F][temp] ;
    }
    for(int i=0 ; i<m ; i++) nei[nxt[i]].push_back(i) ;
    for(int i=m-1 ; i>=0 ; i--){
        if(!vis[i]) mp.clear() , dfs(i) ;
    }
    for(int i=0 ; i<m ; i++) cnt[ans[i]]++ ;
    for(int i=0 ; i<n ; i++) cout << cnt[i] << ' ' ;
    cout << '\n' ;
    return 0 ;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...