首页 > 其他分享 >洛谷 P2419 [USACO08JAN]Cow Contest S(最短路:floyed)

洛谷 P2419 [USACO08JAN]Cow Contest S(最短路:floyed)

时间:2022-09-30 20:56:47浏览次数:83  
标签:typedef 洛谷 Cow Contest P2419 LL cin const 短路

https://www.luogu.com.cn/problem/P2419

题目大意:

给定n头奶牛(1<=N<=100),按1..N依次编号。

m轮:两两之间进行对决,赢了的排在左边,输了的排在右边。

我们想知道奶牛们编程能力的具体排名,希望能根据这些信息,推断出尽可能多的奶牛的编程能力具体排名。
输入 #1 
5 5
4 3
4 2
3 2
1 2
2 5
输出 #1 
2

一眼拓扑排序,但是拓扑实现起来应该会很麻烦,而且数据范围挺小的,所以我们可以换一种思维

  • 如果A赢了B,那么AB之间连接一条边;
  • 按最短路实现所有边的连接
  • 如果一个点,可以由其他所有点都有直接或者间接的连接,那么就可以确定具体的排名,
  • 否则不能确定具体的名次位置

对于题目给的样例一,我们可以画一个图

注意箭头指向

在这个样例中我们就可以很清晰得得出结论

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=2000020;
const int N=200200,M=2002;
LL f[M][M];
int main()
{
    cin.tie(0); cout.tie(0);ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        LL n,m;
        cin>>n>>m;
        for(LL i=1;i<=m;i++)
        {
            LL x,y;
            cin>>x>>y;
            f[x][y]=1;//表示x到y是联通的
        }
        for(LL k=1;k<=n;k++)
        {
            for(LL i=1;i<=n;i++)
            {
                for(LL j=1;j<=n;j++)
                {
                    //如果一开始就有路,如果两条路可以连接
                    f[i][j]=f[i][j]||(f[i][k]&&f[k][j]);
                }
            }
        }
        LL ans=0;
        for(LL i=1;i<=n;i++)
        {
            LL flag=1;
            for(LL j=1;j<=n;j++)
            {
                //对于任意节点 u,如果其他所有节点到节点 u 和从节点 u 到其他所有节点的路径都是确定的,那么节点 u 的排名就是确定的。
                if(i==j) continue;
                flag=flag&&(f[i][j]||f[j][i]);
            }
            if(flag==1) ans++;
        }
        cout<<ans<<endl;
    }
    return 0;
}

标签:typedef,洛谷,Cow,Contest,P2419,LL,cin,const,短路
From: https://www.cnblogs.com/Vivian-0918/p/16746218.html

相关文章

  • 洛谷P8551 Bassline 题解
    P8551Bassline题解分析这道题做月赛的时候想了好久,最后发现其实很简单。我们用样例数据来分析:如图所示,我们将每个区间抽象化为一个一个的长条。题目给我们的两个要......
  • 洛谷 P7861 SAVEZ 题解(哈希)
    2020牛客杯NOIP赛前集训提高第一场T2牛牛的猜球游戏题解目录2020牛客杯NOIP赛前集训提高第一场T2牛牛的猜球游戏题解比赛链接题目题目描述输入格式输出格式样例样例......
  • P2671 [NOIP2015 普及组] 求和(洛谷前缀和
    P2671[NOIP2015普及组]求和1//(x+z)*(num[x]+num[z])=2//(x1+x2)*(y1+y2)+(x1+x3)*(y1+y3)+(x2+x3)*(y2+y3)3//=x1*(y1*(n-2)+y1+y2+...+yn)4//+x2*(y2*......
  • 洛谷 P3193 [HNOI2008]GT考试
    原题链接dp+矩阵加速明天再来写#pragmaGCCoptimize(2)#include<bits/stdc++.h>usingnamespacestd;#definefrfirst#definesesecond#defineet0exit(0);#......
  • AtCoder Beginner Contest 266
    AtCoder五十连练第三练AtCoderBeginnerContest266D-SnukePanic(1D)高桥正试图抓住许多Snuke。有五个坑在坐标\(0,1,2,3,4\)号线,连接到Snuke的巢。现在,\(......
  • 洛谷 P1164 小A点菜(DP:01背包)
    https://www.luogu.com.cn/problem/P1164题目大意:给定n种菜品(每种菜品只有1份),m块钱;问我们花完了这m块钱可以点的不同种类的菜品有多少种方案数?输入441122输......
  • 洛谷 P1667
    这种奇怪的在数列上操作,看看在前缀和/差分数组上发生了什么事往往能发现新大陆。考虑\(a\)的前缀和\(S\),不难发现操作\([l,r]\)就是交换\(S_{l-1},S_r\)。所以最......
  • 洛谷 P7774 [COCI2009-2010#2] KUTEVI(DP:完全背包)
    https://www.luogu.com.cn/problem/P7774题目大意:给定n个已知角度a[1],a[2],,,a[n];给定m个需要我们去拼凑的角度b[1],b[2],,,b[m];数组a中的角度可以使用任意多次,从......
  • 洛谷 CF1257F Make Them Similar 灰 题解
    前言本题解采用折半搜索算法完成,对于不打算用这种方法的同学,这篇题解可能会浪费你人生中宝贵的十几分钟。思路此题似乎找不出什么好的性质,那么考虑暴力。发现\(x,a\)......
  • AtCoder Beginner Contest 256
    AtCoder五十连练第二练AtCoderBeginnerContest256D-UnionofInterval给定\(N\)个左闭右开的区间,求这些区间的并集。数据范围:\(1\leN\le2\times10^5\)......