记录一个floyed的神仙方法

Posted 钟钟终

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一个floyed的神仙方法相关的知识,希望对你有一定的参考价值。

https://www.luogu.com.cn/problem/P2419
真的妙蛙。巧妙应用位运算和floyed算法
首先:只有 一头牛和其他所一路牛的关系确定了,它的排名才确定。
而floyed算法,不仅能确定任意两点的小小路径,此处竟然和位运算结合,表示两点之间时候有关联(能否走到)

#include <bits/stdc++.h>

using namespace std;
const int maxn=1e2+5;
const int inf=0x3f3f3f3f;
int n,m,f[maxn][maxn],ans,g;

int main()

    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    
        int u,v;scanf("%d%d",&u,&v);
        f[u][v]=1;
    
    for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        f[i][j]=f[i][j]|(f[i][k]&f[k][j]);  //i到j的两种情况
    for(int i=1;i<=n;i++)
    
        g=1;
        for(int j=1;j<=n;j++)  //只有这个点和其他n-1个结点关系确定才成立
        
            if(i==j)
                continue;
            g=g&(f[i][j]|f[j][i]);
        
         ans+=g;
    
    cout<<ans<<endl;
    return 0;

以上是关于记录一个floyed的神仙方法的主要内容,如果未能解决你的问题,请参考以下文章

神仙代码收集记录

最短路--Dijkstra&&Floyed&&SPFA

floyed算法的一些感想

hdu 1690(Floyed)

Floyed-Warshall算法(求任意两点间最短距离)

最短路径——Floyed