QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#858725 | #9677. 基础博弈练习题 | peimuda | Compile Error | / | / | C++11 | 2.6kb | 2025-01-16 21:11:08 | 2025-01-16 21:11:09 |
Judging History
This is the latest submission verdict.
- [2025-01-16 21:11:09]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2025-01-16 21:11:08]
- Submitted
answer
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<algorithm>
#include<bits/stdc++.h>
#define pr pair
#define f first
#define s second
#define ll long long
#define mp make_pair
#define pll pr<ll,ll>
#define pii pr<int,int>
#define piii pr<int,pii>
using namespace std;
int a[1000006];
int b[1000006];
int ap[1000006];
vector<int> qr[1000006];
vector<int> hd[1000006];
vector<int> e[1000006];
vector<int> f[1000006];
bool bd[1000006];
int nx[1000006],pf[1000006];
int gq[1000006];
int mi[1000006],ans[1000006];
bool vd[1000006];
int t;
vector<int> ls;
int dfn[1000006];
void dfs(int x)
{
if(vd[x]) return;
vd[x]=1;
for(int to:f[x]) dfs(to);
dfn[t++]=x;
}
void df(int x)
{
if(vd[x]) return;
vd[x]=1;
ls.push_back(x);
for(int to:e[x]) dfs(to);
}
int main()
{
ios_base::sync_with_stdio(0);
int n,m,k;
cin>>n>>m>>k;
for(int i=0;i<n;i++) cin>>a[i],a[i]--;
for(int i=0;i<n;i++) ap[i]=k+1;
int x;
for(int i=0;i<k;i++)
{
cin>>x;
x--;
b[i]=x;
ap[x]=min(ap[x],i);
}
int u,v;
while(m--)
{
cin>>u>>v;
u--;
v--;
e[u].push_back(v);
f[v].push_back(u);
}
for(int i=0;i<n;i++) dfs(i);
reverse(dfn,dfn+n);
for(int i=0;i<n;i++) vd[i]=0;
for(int i=0;i<n;i++)
{
int j=dfn[i];
if(vd[i]) continue;
ls.clear();
df(j);
int st=k-1;
for(int l:ls) st=min(st,ap[a[l]]);
hd[st].push_back(i);
for(int l:ls) qr[i].push_back(a[l]);
}
for(int i=0;i<=n;i++) ap[i]=k+1;
for(int i=0;i<=n;i++) nx[i]=i+1,pf[i+1]=i;
nx[n+1]=0;
pf[0]=n+1;
for(int i=k-1;i>=0;i--)
{
for(int j:hd[i])
{
for(int l:qr[l]) bd[l]=1;
int c=nx[n+1];
for(;bd[c];c=nx[c]);
gq[j]=ap[c];
for(int l:qr[l]) bd[l]=0;
}
int g=b[i];
ap[g]=i;
pf[nx[g]]=nx[g];
nx[pf[g]]=pf[g];
nx[g]=nx[n+1];
pf[nx[n+1]]=g;
nx[n+1]=g;
pf[g]=n+1;
}
for(int i=0;i<n;i++) vd[i]=0;
for(int i=0;i<n;i++) mi[i]=k+1,ans[i]=k+1;
for(int i=0;i<n;i++)
{
int j=dfn[i];
if(vd[j]) continue;
ls.clear();
df(j);
int st=k+1;
for(int l:ls) st=min(st,ap[a[l]]);
int o=gq[i];
int fd=k+1;
for(int l:ls) for(int p:e[l]) fd=min(fd,mi[p]);
int td=fd;
if(ls.size()>1)
{
if(st<fd)
{
int kz=min(o-1,fd);
if((kz-st)%2==1) td=st+1;
else td=st;
}
for(int l:ls) mi[l]=td,ans[l]=td;
}
else
{
if(st<fd-1) td=st;
mi[ls[0]]=td;
ans[ls[0]]=fd;
}
// cout<<"-----\n";
// for(int l:ls) cout<<l<<' ';
// cout<<endl;
// cout<<"F "<<i<<' '<<j<<" "<<st<<' '<<td<<' '<<fd<<' '<<o<<endl;
}
for(int i=0;i<n;i++) cout<<(ans[i]>=k?-1:ans[i])<<' ';
cout<<'\n';
return 0;
}
詳細信息
answer.code: In function ‘int main()’: answer.code:91:38: error: ‘l’ was not declared in this scope 91 | for(int l:qr[l]) bd[l]=1; | ^ answer.code:95:38: error: ‘l’ was not declared in this scope 95 | for(int l:qr[l]) bd[l]=0; | ^