CF #580 Div. 2 D. Shortest Cycle//floyd求最小正环(模板

https://codeforces.com/contest/1206/problem/D

题意:

思路:

如果有3个数二进制有一位都是1,那么答案就是3。否则最多有64*2个正整数。对于64*2个正整数,求最小环即可。

假题E+触及知识盲区场。。

 

#include
using namespace std;
#define LL long long
#define FI first
#define SE second
#define MP make_pair
#define PII pair
const LL mod = 1e9+7;
const int MX = 1e6+5;
LL a[MX];
int g[300][300];
int mp[300][300];
vectorv;
int floyd(int n){
    for(int i=0;i>n;
    for(int i=1;i<=n;i++)scanf("%I64d",&a[i]);
    for(int i=0;i<300;i++)for(int j=0;j<300;j++) g[i][j]=INT_MAX/3;
    for(int i=1;i<=n;i++){
        int wei=1;
        LL tt=a[i];
        while(tt){
            if(tt%2) cnt[wei]++;
            wei++;
            tt/=2;
        }
    }
    for(int i=1;i<100;i++) if(cnt[i]>=3){puts("3");return 0;}
    for(int i=1;i<=n;i++){
        if(a[i]) v.push_back(a[i]);
    }
    for(int i=0;i

 

你可能感兴趣的:(图)