站外题求助
  • 板块题目总版
  • 楼主Pig_py
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/8/10 12:03
  • 上次更新2023/11/3 04:46:16
查看原帖
站外题求助
448873
Pig_py楼主2023/8/10 12:03

题目

#include<bits/stdc++.h>
using namespace std;
int n,a[25][25],cnt,h[25];
struct Graph{
    int to,nxt,frm;
}e[1505];
bitset<25>f[16777227];
void add(int u,int v){
    cnt++;
    e[cnt].frm=u;
    e[cnt].to=v;
    e[cnt].nxt=h[u];
    h[u]=cnt;
}
void dfs(int status,int x){
    if(f[status].test(x))return;
    //f[status].test(x)=1;
    f[status].set(x,1);
    for(int i=h[x];i;i=e[i].nxt){
        int v=e[i].to;
        if(!(status&(1<<(e[i].to-1)))&&f[status|(1<<(e[i].to-1))].test(v)==0){
            dfs(status|(1<<(e[i].to-1)),v);
        }
    }
    return;
}
signed main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            scanf("%1d",&a[i][j]);
            if(a[i][j])add(i,j);
        }
    }
    dfs(1,1);
    int mj=(1<<n)-1;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            int flag=0;
            for(int k=0;k<=mj;k++){
                if(f[k].test(i)&&f[(mj^k)|1].test(j)){
                    flag=1;
                    break;
                }
            }
            printf("%d",flag);
        }
        puts("");
    }
}
2023/8/10 12:03
加载中...