Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
38458 氩_wjy 【S】T3 C++ 无测评数据 80 2780 MS 188068 KB 1305 2025-10-08 15:13:17

Tests(51/53):


#include<bits/stdc++.h> #define int long long #define vi vector<int> using namespace std; const int N=5e5+7,w=127; int n,m,a[N]; vi vc[N],IE[N]; int Ind[N],Ans[N]; inline bool cmp(int x,int y){return a[x]>a[y];} inline vi Merge(vi u,vi v){ vi ret;ret.clear(); for(auto x:u)ret.push_back(x); for(auto x:v)ret.push_back(x); sort(ret.begin(),ret.end(),cmp); ret.erase(unique(ret.begin(),ret.end()),ret.end()); ret.resize(min((int)ret.size(),w));return ret; } signed main(){ #ifndef ONLINE_JUDGE freopen("stone.in","r",stdin); freopen("stone.out","w",stdout); #endif cin>>n>>m; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=m;i++){ int u,v;cin>>u>>v; IE[v].push_back(u);Ind[u]++; }for(int i=1;i<=n;i++)vc[i].push_back(i); queue<int> q; for(int i=1;i<=n;i++)if(!Ind[i])q.push(i); while(!q.empty()){ int u=q.front();q.pop(); for(auto v:IE[u]){ vc[v]=Merge(vc[v],vc[u]);--Ind[v]; if(!Ind[v])q.push(v); } }for(int i=1;i<=n;i++){ Ans[i]=-1; for(int x=0;x<vc[i].size();x++)for(int y=x+1;y<vc[i].size();y++)Ans[i]=max(Ans[i],a[vc[i][x]]&a[vc[i][y]]); }for(int i=1;i<=n;i++)cout<<Ans[i]<<" ";cout<<endl; return 0; }


测评信息: