제출 #1239893

#제출 시각아이디문제언어결과실행 시간메모리
1239893moondarkside기지국 (IOI20_stations)C++20
100 / 100
306 ms624 KiB
#include<bits/stdc++.h>
using namespace std;

vector<vector<int>> Next;
vector<int> Values;

int dfs(int x,int parent,int Pelements,bool type) {
    
    
	if(type==false) {

		Values[x]=Pelements;

		int children=1+Pelements;
		for(int i=0; i<Next[x].size(); i++) {
			if(Next[x][i]!=parent) {
				children += dfs(Next[x][i],x,children,true);

			}
		}
		return children-Pelements;


	}


	int children=Pelements;
	for(int i=0; i<Next[x].size(); i++) {
		if(Next[x][i]!=parent) {
			children += dfs(Next[x][i],x,children,false);

		}
	}

	
	Values[x]=children;
	children++;
	
	return children-Pelements;





}

vector<int> label(int n, int k, vector<int> u, vector<int> v) {

	Next=vector<vector<int>> (n);
	for(int i=0; i<n-1; i++) {
		Next[u[i]].push_back(v[i]);
		Next[v[i]].push_back(u[i]);
	}

	Values=vector<int>(n);
	dfs(0,-1,0,false);
    return Values;
}


int find_next_station(int s, int t, vector<int> c){
    if(s<c[0]){
        if(t<s){
            return c[c.size()-1];
        }
        
        for(int i=0;i<c.size()-1;i++){
            if(t<=c[i]){
                return c[i];
            }
        }
        
        return c[c.size()-1];
        
        
        
    }


    if(t>s){
            return c[0];
        }
        
        for(int i=c.size()-1;i>0;i--){
            if(t>=c[i]){
                return c[i];
            }
        }
        
        return c[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...