欢迎光临散文网 会员登陆 & 注册

牛客竞赛题目讲解_Two Graphs( unordered_map)

2022-04-28 16:18 作者:Clayton_Zhou  | 我要投稿

// https://ac.nowcoder.com/acm/contest/20322/D

#include "stdafx.h"

//#include <bits/stdc++.h>


#include <algorithm>

#include <iostream>

#include <cstring>

 #include <vector>

 #include <unordered_map>


using namespace std;

int n,m1,m2,ans;

int f[10];

int e1[10][10],e2[10][10];

 char edge[32][2]={

1 ,2,

1 ,3,

4 ,1,

4 ,2,

4, 3

};

 

int main(){

n=4,m1=2,m2=3;

   // while(std::cin>>n>>m1>>m2){

        memset(e1,0,sizeof(e1));

        memset(e2,0,sizeof(e2));

std::unordered_map<int,int>m;

        ans=0;

        for(int i=1,x,y;i<=m1;i++){

           // cin>>x>>y;

x=edge[i-1][0];

y=edge[i-1][1];

            e1[x][y]=e1[y][x]=1;

        }

        for(int i=1,x,y;i<=m2;i++){

           // cin>>x>>y;

x=edge[m1+i-1][0];

y=edge[m1+i-1][1];


            e2[x][y]=e2[y][x]=i;

        }


        for(int i=1;i<=n;i++)f[i]=i;


        do{

            int flag=1,v=0;

            for(int i=1;i<=n;i++){

                for(int j=1;j<=n;j++){

                    if(e1[i][j]){

if(!e2[f[i]][f[j]]){flag=0;break;}

// cout<<endl<<"before  "<<v<<"  e2[f[i]][f[j]]=  "<<e2[f[i]][f[j]]<<endl;

                        v|=1<<e2[f[i]][f[j]];

// cout<<"After  "<<v<<endl;

                    }

                }

if(!flag)break;

            }

            if(flag&&m[v]==0){

ans++,m[v]=1;

cout<<v<<endl;

}

        }while(std::next_permutation(f+1,f+n+1));

        printf("%d\n",ans);

   // }

    return 0;

}


牛客竞赛题目讲解_Two Graphs( unordered_map)的评论 (共 条)

分享到微博请遵守国家法律