Submission #1135605

#TimeUsernameProblemLanguageResultExecution timeMemory
1135605Joseph01219월 (APIO24_september)C++20
30 / 100
1093 ms6928 KiB
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+5;
#define vt vector


int N,M;

int solve(int n, int m, vector<int> p, vector<vector<int>> vv){
	ios_base::sync_with_stdio(0);
	cin.tie(NULL);
	N = n; M = m;
	vt<vt<vt<int>>> e(m,vt<vt<int>>(N+1));
	vt<vt<int>> indeg(m,vt<int>(N+1,0)), indeg2(m,vt<int>(N+1,0));
	vt<vt<int>> arr(m,vt<int>(N+1));
	vector<set<vector<int>>> s(M);
	for(int i = 0;i<N;i++){
		int x = p[i];
		if(i == 0) continue;
		for(int j = 0;j<M;j++){
			e[j][i].push_back(x);
			indeg[j][x]++;
		}
		for(int i = 0;i<M;i++){
			for(int j = 0;j<N-1;j++){
				arr[i][j] = vv[i][j];
			}
		}
	}
	
	int ans = 0;
	for(int i = 0;i<N-1;i++){
		bool flag = true;
		for(int j = 0;j<M;j++){
			indeg2[j][arr[j][i]] = indeg[j][arr[j][i]];
			s[j].insert({indeg[j][arr[j][i]],arr[j][i]});
			while(s[j].size()){
				vector<int> v = *s[j].begin();
				// cout<<v[0]<<" "<<v[1]<<endl;
				if(v[0]!=0) break;
				s[j].erase(s[j].begin());
				for(auto k: e[j][v[1]]){
					indeg[j][k]-=1;
					if(indeg[j][k] == 0){
						auto it = s[j].find({indeg2[j][k],k});
						if(it != s[j].end()){ //when already add
							// cout<<"node: "<<arr[j][i]<<endl;
							vector<int> v2 = *it;
							s[j].erase(it);
							v2[0] = 0;
							s[j].insert(v2);
						}
					}
				}
			}
		}
		//check if everyone if 0
		for(int j = 0;j<M;j++){
			// cout<<s[j].size()<<" ";
			if(s[j].size()) flag = false;
		}
		// cout<<"nxt"<<endl;
		if(flag) ans++;
	}
	// cout<<endl;
	// cout<<s[0].size()<<" "<<s[1].size()<<endl;
	return ans;
}

// int main() {
// 	// cout<<solve(5,2,{-1, 0, 0, 1, 1},{{1,2,3,4},{4,1,2,3}});

	
	
// 	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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...