比赛 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;
    }
}