• codeforce1005F


    题解:咕咕

    字符串没学过各种错?还有vector越界。。。。

    考试的时候这样就完了。。。。

    最究极原因还是懒。。。无法快速换策略。

    希望明天模拟赛能改进吧。。。

    #include<bits/stdc++.h>
    using namespace std;
    const long long M=3e6;
    #define ll long long
    struct re{
        ll v;
        ll nex;
    };
    re edge[M];
    ll d[M],n,m,k,tot=0,cnt=0,f[M],a[M],b[M];
    void ad(ll x,ll y){
        cnt++;
        edge[cnt].nex=f[x];
        edge[cnt].v=y;
        f[x]=cnt;
    }
    void bfs(){
        queue<ll>ss;
        ss.push(1);
        while(ss.empty()!=1){
        int az=ss.front();
        ll k=f[az];
        while(k!=-1){
        int x=edge[k].v;
        if(d[x]==-1){d[x]=d[az]+1;ss.push(x);}
        k=edge[k].nex;
        }
        ss.pop();
        }
    }
    ll js[M+1];
    int main()
    {    //freopen("p.in","r",stdin);
        cin>>n>>m>>k;
        memset(f,-1,sizeof(f));
        for(int i=1;i<=m;i++){
        cin>>a[i]>>b[i];
        ad(a[i],b[i]);
        ad(b[i],a[i]);
        }
        memset(d,-1,sizeof(d));
        d[1]=0;
        bfs();
        vector<ll>q[m+3];
        for(int i=1;i<=m;i++){
        if(d[a[i]]==d[b[i]]+1)q[a[i]].push_back(i);
        if(d[b[i]]==d[a[i]]+1)q[b[i]].push_back(i);
        }
        for(int i=1;i<=n;i++)js[i]=0;
        vector<string>ans;
        for(int i=1;i<=k;i++){
        string s(m,'0');
        tot++;
        bool az=1;
        for(int j=2;j<=n;j++){
        int x=q[j][js[j]];
        s[x-1]='1';
        }
        //for(int j=0;j<m;j++)cout<<s[j];
        //cout<<endl;
        for(int j=1;j<=n;j++)
        if(js[j]+1<q[j].size()){
            az=0;
            js[j]++;
            break;
        } else js[j]=0;
        ans.push_back(s);
        //cout<<s<<endl;
    //    cout<<q[1][0]<<endl;
        if(az)break;
        }
        cout<<tot<<endl;
        for(int i=0;i<tot;i++)
        cout<<ans[i]<<endl;
        return 0;
    }
    View Code
    戒骄戒躁
  • 相关阅读:
    监控 | open-falcon | 安装
    日语 | 日本50音
    PXE | 开关机
    linux | 网卡驱动
    Linux——Centos 7 chmod命令
    Linux——Centos 7 ls命令
    Linux——Centos 7 passwd命令
    Linux——Centos 7 账户管理命令(用户组篇)groupadd groupmod groupdel
    Linux——Centos 7 账户管理命令(用户篇)useradd usermod userdel
    Linux——Centos 7 diff命令
  • 原文地址:https://www.cnblogs.com/lxzl/p/9649817.html
Copyright © 2020-2023  润新知