比赛 EYOI暨SBOI暑假快乐赛4th 评测结果 AAATWWWWTW
题目名称 往广大的天空 最终得分 30
用户昵称 该账号已注销 运行时间 2.323 s
代码语言 C++ 内存使用 2.88 MiB
提交时间 2022-06-28 11:32:00
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
struct abc{
    int f,t,a,n;
}mp[1010];
int n,m,k=0,t[1010]={0},cnt=0;
int hd[1010];
bool v[1010]={0};
int add(int x,int y)
{
    mp[++cnt].f=x;
    mp[cnt].t=y;
    mp[cnt].n=hd[x];
    hd[x]=cnt;
}
int dfs(int x)
{
    t[x]++;
    for(int i=hd[x];i;i=mp[i].n)
    {
        int ver=mp[i].t;
        if(mp[i].a==1&&v[ver]==0)
        {
            v[ver]=1;
            dfs(ver);
        }
    }
    return 0;
}
int main(){
    freopen("stasis.in","r",stdin);
    freopen("stasis.out","w",stdout);
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int x,y;
        cin>>x>>y;
        add(x,y);
        add(y,x);
    }
    for(int i=0;i<(1<<m);i++)
    {
        int p=0;memset(v,0,sizeof(v));
        for(int j=0;j<m;j++)
        {
            if((i>>j)&1==1){
            mp[j*2+1].a=1;
            mp[j*2+2].a=1;
            }
            else{
            mp[j*2+1].a=0;
            mp[j*2+2].a=0;
            }
        }
        v[1]=1;
        dfs(1);
    }
    for(int i=2;i<=n;i++)
    {
        cout<<t[i]<<' ';
    }
    cout<<endl;
    return 0;
}