【数算A】舰队、海域出击!

就是判断一个有向图是否有环,注意图可能不连通。

用dfs搜一下就行了。

 1 #include<cstdio>
 2 #include<cstring>
 3 int n,m,t,h[100001],v[100001];
 4 struct node{
 5     int next,to;
 6 }e[500001];
 7 int dfs(int i){
 8     v[i]=-1;
 9     for(int j=h[i];j;j=e[j].next){
10         int t=e[j].to;
11         if(v[t]<0) return 0;              //如果和它邻接的边也在搜索栈中,说明是环
12         else if(!v[t]&&!dfs(t)) return 0; //即使没在搜索栈,但是它的下一条边不符合
13     }
14     v[i]=1; return 1;  //包含当前结点的路径搜完了且无环路
15 }
16 int check(){
17     for(int i=1;i<=n;i++)
18         if(!v[i])
19             if(!dfs(i)) return 0; //0表示有环,1表示无环
20     return 1;
21 }
22 int main()
23 {
24     scanf("%d",&t);
25     while(t--){
26         memset(v,0,sizeof v);
27         memset(h,0,sizeof h);     //注意到h[]也要初始化
28         scanf("%d%d",&n,&m);
29         for(int i=1;i<=m;i++){
30             int x,y;
31             scanf("%d%d",&x,&y);
32             e[i].next=h[x];
33             e[i].to=y;
34             h[x]=i;
35         }
36         if(check()) printf("No\n");
37         else printf("Yes\n");
38     }
39 }
时间: 2024-10-16 02:14:12

【数算A】舰队、海域出击!的相关文章

随 机 数 算 法

一.随机数概述 在password技术中,随机序列是非常重要的,比方密钥产生.数字签名.身份认证和众多的password学协议等都要用到随机序列.所以产生高质量的随机数序列对信息的安全性具有十分关键的数据.随机数分为真随机数和伪随机数,计算机通过算法产生的随机数并不上真正意义上的随机数,非常easy被破解,仅仅能称为伪随机数.若要产生真正的随机数,必须通过硬件来实现,比方使用离子辐射事件的脉冲检測器.气体放电管和带泄露的电容等,可是为每台计算机配备这种装置上不可能.所以在此我们通过改进我们的算法

数算 2

线性表 顺序表示 struct SeqList{ int n; int MAXNUM; DataType *element; } typedef struct SeqList *PSeqList; - 不适合随机插入和删除- 节省了空间但是操作的时间复杂度增加了 链接表示 数据域 指针域 struct Node; typedef struct Node *PNode; struct Node{ Datatype info; PNode link; } typedef struct Node *L

【数算A】表达式&#183;表达式树&#183;表达式求值

这道题在输出上太坑了,画出来不像树... 1 #include<iostream> 2 #include<cstring> 3 #include<stack> 4 using namespace std; 5 int val[26],n,len,ans,maxDep; 6 char infix[55],postfix[55],out[50][300]; 7 struct node{ 8 int ch; 9 node *l,*r; 10 node(){ 11 l=r=NU

[数算]数量关系

原文地址:https://www.cnblogs.com/moonsoft/p/9401926.html

计蒜客NOIP模拟赛D2T3 数三角形

刚刚上高中的洁洁在学习组合数学的过程中遇到一道麻烦的题目,她希望你能帮助她解决.给定一张无向完全图 G,其中大部分边被染成蓝色,但也有一些边被染成红色或者绿色.现在,洁洁需要给这张图的多样性进行打分.一张图的多样性取决于它的同色和异色三角形的个数.具体来说,G 中每有一个三边颜色都互不同的三角形(异色三角形)可以得 3 分,每有一个三边颜色都相同的三角形(同色三角形)则要被扣掉 6 分,其它三角形不得分也不扣分. 现在,请你写一个程序来计算 G 的多样性分数.输入格式 第一行两个正整数 n 和

hdu 不可摸数

不可摸数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8417    Accepted Submission(s): 2176 Problem Description s(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何 数m,s(m)都不等于n,则称n为不可摸数. Input

一道公式题——数三角形

数三角形(count) 时限:10s 内存:512M 刚刚上大学的洁洁在学习组合数学的过程中遇到一道麻烦的题目,她希望你能帮助她解决.给定一张无向完全图G,其中大部分边被染成蓝色,但也有一些边被染成红色或者绿色.现在,洁洁需要给这张图的多样性进行打分.一张图的多样性取决于它的同色和异色三角形的个数.具体来说,G中每有一个三边颜色不同的三角形可以得3分,每有一个三边颜色相同的三角形则要被扣掉6分,其它三角形不得分也不扣分. 现在,请你写一个程序来计算G的多样性分数. 输入数据: 第一行两个正整数n

一文讲透Dubbo负载均衡之最小活跃数算法

本文是对于Dubbo负载均衡策略之一的最小活跃数算法的详细分析.文中所示源码,没有特别标注的地方均为2.6.0版本. 为什么没有用截止目前的最新的版本号2.7.4.1呢?因为2.6.0这个版本里面有两个bug.从bug讲起来,印象更加深刻. 最后会对2.6.0/2.6.5/2.7.4.1版本进行对比,通过对比学习,加深印象. 本文目录 第一节:Demo准备. 本小节主要是为了演示方便,搭建了一个Demo服务.Demo中启动三个服务端,负载均衡策略均是最小活跃数,权重各不相同. 第二节:断点打在哪

21中介模式

 1中介模式的核心内容是: A:通过中间这向多方发送消息 2中介模式的作用:通过中介模式模式中介对两个互不通信的部分进行发通知. 3中介模式具体描述 MEDIATOR调停者模式 调停者模式:调停者模式包装了一系列对象相互作用的方式, 使得这些对象不必相互明显作用.从而使他们可以松散偶合. 当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用. 保证这些作用可以彼此独立的变化.调停者模式将多对多的相互作用转化 为一对多的相互作用.调停者模式将对象的行为和协作抽象化 ,把对象在小