Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
41460 LYLAKIOIAKIOI 【BJ】T2 C++ 运行超时 65 1000 MS 190628 KB 1849 2026-04-24 16:15:09

Tests(15/17):


#include<bits/stdc++.h> using namespace std; const int N=5050; int n,k,a[N][N]; bool tag[N][N]; bitset<N> bs[4][N]; void init(){ if(k!=4){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(a[i][j]==k-1) bs[0][i].set(j,1); if(a[i][j]==2) bs[1][i].set(j,1); } } }else{ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ bs[a[i][j]][i].set(j,1); } } } } bool ok[N]; int fa[N],val[N]; vector<int> gets(int u,int pa){ vector<int> res; for(int i=1;i<=n;i++){ if((a[u][i]+1)%k==a[pa][i]) res.push_back(i); }return res; } int cost=0; void get(int u,vector<int> subt){ //cout<<u<<endl; //for(auto ed:subt) cout<<ed<<' ';cout<<endl; //cout<<endl; vector<int> vec; for(auto ed:subt){ if(a[u][ed]==1){ vec.push_back(ed); if(ok[ed]) continue; val[ed]=0; for(int i=0;i<n;i++){ if((a[ed][i]+1)%k==a[u][i]) val[ed]++; }ok[ed]=1; } } sort(vec.begin(),vec.end(),[&](int x,int y){return val[x]>val[y];}); for(auto ed:vec){ if(tag[u][ed]) continue; vector<int> s=gets(ed,u); for(auto eg:s) tag[u][eg]=1;get(ed,s);fa[ed]=u; } } int main(){ //freopen("construction.in","r",stdin); //freopen("construction.out","w",stdout); ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>k; for(int i=0;i<n;i++){ for(int j=0;j<i;j++){ int x;cin>>x; a[i][j]=x;a[j][i]=x; } } vector<int> vec; for(int i=0;i<n;i++) vec.push_back(i); init();get(0,vec); for(int i=1;i<n;i++) cout<<fa[i]<<' '; //cerr<<cost<<endl; return 0; }


测评信息: