比赛 |
EYOI与SBOI开学欢乐赛8th |
评测结果 |
TTAATAAAAA |
题目名称 |
灾难 |
最终得分 |
70 |
用户昵称 |
康尚诚 |
运行时间 |
4.074 s |
代码语言 |
C++ |
内存使用 |
6.37 MiB |
提交时间 |
2022-09-26 21:28:50 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=65600;
struct node
{
vector<int> vec;
}eaten[N];
int food[N],fd[N];
queue<int> q;
int n;
int die(int a)//a死的灾难值
{
// for(int i=1;i<=n;i++)
// {
// fd[i]=food[i];
// }
memcpy(fd,food,sizeof(fd));
int zainan=0;
q.push(a);
vector<int>::iterator it;
while(!q.empty())
{
int now=q.front();q.pop();
for(it=eaten[now].vec.begin();it!=eaten[now].vec.end();it++)
{
int ls=*it;
fd[ls]--;
if(!fd[ls])
{
zainan++;
q.push(ls);
}
}
}
return zainan;
}
int main()
{
freopen("catas.in","r",stdin);
freopen("catas.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
{
int a;
while(cin>>a&&a!=0)
{
eaten[a].vec.push_back(i);
food[i]++;
}
}
for(int i=1;i<=n;i++)
{
// cout<<food[i]<<" ";
// for(it=eaten[i].vec.begin();it!=eaten[i].vec.end();it++)
// {
// cout<<*it<<" ";
// }
// cout<<endl;
cout<<die(i)<<" ";
cout<<endl;
}
}