首页 > 其他分享 >P2419 Cow Contest S

P2419 Cow Contest S

时间:2024-08-23 20:04:18浏览次数:4  
标签:Cow Contest int P2419 while getchar

挺有意思的,记一下。

P2419 Cow Contest S

题目大意:

有 \(n(n\le 100)\) 个数,告诉你 \(m\) 条某两个数的大小关系,问你有多少数的排名是可以确定的(保证不会冲突)。

题目思路:

首先,我们肯定是可以直接拓扑,那就是变成了问你拓扑时有多少数是单独一层的(本次只有它这一个数入队),但是我们还有更简单的的方法。

考虑对于每一条信息 \(u>v\),由 \(u\) 向 \(v\) 连一条边,这样我们就获得了一个图,因为保证不会冲突,所以这还是个 \(DAG\)。

可以发现,从某一点出发,所有可达的点排名都比这个点小,因为大小关系是有传递性的。

所以直接求连通性,如果对于某一点 \(u\),对于所有 \(v(v\not= u)\),\(v\) 能到达 \(u\) 或者 \(u\) 能到达 \(v\),则 \(u\) 的排名是确定的。

Code:

#include<bits/stdc++.h>
using namespace std;
inline int read(){
	int rt=0;	char g=getchar();
	while(g<'0'||g>'9')	g=getchar();
	while(g>='0'&&g<='9')	rt=(rt<<3)+(rt<<1)+g-'0',g=getchar();
	return rt;
}
int n,m,ans;
bool a[105][105];
int main()
{
	n=read();	m=read();
	for(int i=1,u,v;i<=m;i++)
	{
		u=read();v=read();
		a[u][v]=1;
	}
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				a[i][j]|=a[i][k]&a[k][j];
	bool kk;
	for(int i=1;i<=n;i++)
	{
		kk=1;
		for(int j=1;j<=n;j++)
		{
			if(i==j)	continue;
			kk&=a[i][j]|a[j][i];
		}
		ans+=kk;
	}
	printf("%d",ans);
	return 0;
}

标签:Cow,Contest,int,P2419,while,getchar
From: https://www.cnblogs.com/Jack-YT/p/18296274

相关文章

  • AtCoder Beginner Contest 中的小思维题
    078Dhttps://atcoder.jp/contests/abc078/tasks/arc085_b问题陈述我们有一副由\(N\)张牌组成的扑克牌。每张牌上都写着一个整数。从最上面开始的第\(i\)张牌上的整数是\(a_i\)。两个人X和Y将用这副扑克牌玩一个游戏。最初,X手中有一张写有\(Z\)的牌,Y手中有一张......
  • AtCoder Beginner Contest 048
    A-AtCoder***Contest先输出首字母,然后遍历字符串,遇到空格就输出后面的第一个字符。#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;intmain(){ ios::sync_with_stdio(false),cin.tie(nullptr); strings; getline(cin,s); cout<<s[0];......
  • Atcoder Beginner Contest 365
    AtcoderBeginnerContest365A题意输入年份,输出该年份天数。思路略B题意输入一个序列,输出该序列次大值的位置。思路略C题意给定\(N\),序列\(A\)和\(M\)。求满足下条件的\(x\)最大值。\[\sum_{i=1}^{n}\min(x,A_i)\leM\]思路式子左边有单调性,二分\(x\)......
  • AtCoder Beginner Contest 047
    A-FightingoverCandies简单排序。#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;intmain(){ ios::sync_with_stdio(false),cin.tie(nullptr); vector<int>a(3); cin>>a[0]>>a[1]>>a[2]; sort(a.begi......
  • AtCoder Beginner Contest 367
    A-ShoutEveryday思路:水题一道,模拟即可。B-Cut.0思路:直接cin和cout即可,c++输入输出性质。C-EnumerateSequences思路:注意到数据范围很小,因此考虑到搜素所有的序列,然后判断是否合法。D-Pedometer思路:观察到是环上问题,先断环为链,观察题目,可以发现,对于s,它的终......
  • AtCoder Beginner Contest 046
    A-AtCoDeerandPaintCans#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;intmain(){ ios::sync_with_stdio(false),cin.tie(nullptr); set<int>s; for(inti=0;i<3;i++){ intx; cin>>x; s.inser......
  • 题解:P9944 [USACO21FEB] Comfortable Cows B
    思路由于每次输入\(x\)和\(y\)只改变其上下左右的值,所以每次只要更新其相邻的值即可。当某个位置相邻的奶牛数达到\(3\)时,舒适度加一。当某个位置相邻的奶牛数达到\(4\)时,舒适度减一。注意:每增加一头奶牛以后,如果该位置相邻正好有三头奶牛,则舒适度也要加一。ACcod......
  • AtCoder Beginner Contest 367
    题目链接:AtCoderBeginnerContest367总结:发挥很一般,A一直wa。开场有点事,导致D也没debug出来。A.ShoutEverydaytag:模拟Solution:注意\(B>C\)与\(B<C\)的不同情况即可。voidsolve(){  inta,b,c;  cin>>a>>b>>c;  if(c>b){    if(......
  • DirtyCOW-内核分析报告-cnblog
    基础知识mmap(void*start,size_tlength,intprot,intflags,intfd,off_toffset)一个比较常用的函数,将磁盘上的文件映射到虚拟内存中,POC中参数prot为PROT_READ参数,参数flags为MAP_PRIVATE,请参考linux库函数mmap()原理及用法详解_linuxmmap函数madvice(caddr_tadd......
  • AtCoder Beginner Contest 367 题解(E~G)
    E转换关系看作有向边,\(n\)点\(n\)边构成基环树森林,基环树森林k后继唯一,记f[i][j]为点\(i\)的\(2^j\)级祖先,随便倍增。F一眼哈希,不知道有没有不哈希的做法。在这里我们不关心元素的顺序,只关心元素是否出现以及出现几次,考虑一个\(n\)位\(n+1\)进制数,\(a_i\)出现一......