ZZUOJ 1199 大小关系(拓扑排序,两种方法_判断入度和dfs回路判断)

  1 /*
  2   这道题如果按照度为0的节点来判断的时候,将度为0的节点和其相连的节点(度数并减去1) 
  3   从图中去掉,如果度为0的节点的个数为0个但是图中的节点没有都去掉的   时候那么说明
  4   出现了回路!用这种方法必须将重边去除掉! 
  5   
  6   所以推荐用dfs方式进行判断!这种方式还是比较直观的! 
  7 */
  8 #include<iostream>
  9 #include<cstring>
 10 #include<cstdio>
 11 #include<algorithm>
 12 using namespace std;
 13 
 14 int used[30];
 15 int deg[30];
 16 int map[30][30];
 17 int sum;
 18 bool topoSort(){
 19     for(int i=1; i<=sum; ++i){
 20         int cnt=0, p;
 21         for(int j=0; j<26; ++j)
 22            if(used[j] && deg[j]==0) {
 23               ++cnt;
 24               p=j;
 25            }
 26         if(cnt==0) return false;
 27         for(int j=0; j<26; ++j)
 28            if(map[p][j]){
 29                map[p][j]=0;
 30                --deg[j];
 31            } 
 32         deg[p]=-1;
 33     }
 34     return true;
 35 }
 36 
 37 int main(){
 38     int m;
 39     char ch[5];
 40     while(cin>>m){
 41         memset(used, 0, sizeof(used));
 42         memset(deg, 0, sizeof(deg));
 43         memset(map, 0, sizeof(map));
 44         while(m--){
 45            cin>>ch;           
 46            used[ch[0]-'A'] =1;
 47            used[ch[2]-'A'] =1;
 48            if(ch[1]=='>'){
 49                if (map[ch[2]-'A'][ch[0]-'A'] != 1) {//去掉多重边 
 50                ++deg[ch[0]-'A'];
 51                map[ch[2]-'A'][ch[0]-'A']=1;
 52                }
 53            }
 54            else{
 55                if (map[ch[0]-'A'][ch[2]-'A'] != 1) {
 56                ++deg[ch[2]-'A'];
 57                map[ch[0]-'A'][ch[2]-'A']=1;
 58             }
 59           }
 60         }
 61         sum=0;
 62         for(int i=0; i<26; ++i)
 63            if(used[i])  ++sum;
 64         if(topoSort())
 65            cout<<"YES"<<endl;
 66         else cout<<"NO"<<endl;
 67     }
 68     return 0;
 69 } 
 70 
 71 */
 72 
 73 #include<iostream>
 74 #include<cstring>
 75 #include<cstdio>
 76 #include<algorithm>
 77 using namespace std;
 78 int map[30][30];
 79 int vis[30]; 
 80 
 81 bool dfs(int cur){
 82     vis[cur]=-1;
 83     for(int i=0; i<26; ++i)
 84        if(map[cur][i]){
 85           if(vis[i]==-1) return false;
 86           if(!vis[i] && !dfs(i)) return false;
 87        }
 88     vis[cur]=1;
 89     return true;
 90 }
 91 
 92 int main(){
 93     int m;
 94     char ch[5];
 95     while(cin>>m){
 96         memset(vis, 0, sizeof(vis)); 
 97         memset(map, 0, sizeof(map));
 98         while(m--){
 99             cin>>ch;
100             if(ch[1]=='>')
101                map[ch[2]-'A'][ch[0]-'A']=1;
102             else
103                map[ch[0]-'A'][ch[2]-'A']=1;
104         }
105         int flag=0;
106         for(int i=0; i<26; ++i)
107            if(!vis[i])
108              if(!dfs(i)){
109                 flag=1;
110                 break;
111              }
112         if(flag)  cout<<"NO"<<endl;
113         else cout<<"YES"<<endl; 
114     }    
115     return 0;
116 }

 

转载于:https://www.cnblogs.com/hujunzheng/p/3911559.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab画图plot设置字体_R语言科研画图字体格式设置

作者&#xff1a;黄天元&#xff0c;复旦大学博士在读&#xff0c;热爱数据科学与开源工具&#xff08;R&#xff09;&#xff0c;致力于利用数据科学迅速积累行业经验优势和科学知识发现&#xff0c;涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图…

hdu3339 In Action(Dijkstra+01背包)

1 /*2 题意&#xff1a;有 n 个站点&#xff08;编号1...n&#xff09;&#xff0c;每一个站点都有一个能量值&#xff0c;为了不让这些能量值连接起来&#xff0c;要用 3 坦克占领这个站点&#xff01;已知站点的 之间的距离&#xff0c;每个坦克从0点出发到某一个站点&…

在手机上安装youget_you-get 安装和用法

Usage: you-get [OPTION]... [URL]...Startup options:-V | --version 版本信息-h | --help 帮助Dry-run options: (no actual downloading)-i | --info 列出所有可获取的视频信息-u | --url 打印URLs的提取出信息&#xff0c;真实链接地址--json 打印URLs的JSON格式Download o…

ZZUOJ1196: 单调数

1 /*2 注意的事项:是输出小于 10^n的正整数的个数哦&#xff01;开始的时候总比样例输出多一个数&#xff0c;3 纠结了好久&#xff0c;原来是 0加了进去了&#xff01;4 5 dpI[n][m]表示的是第n位添加数字m&#xff08;0....9&#xff09;的构成单调递增数个数 6 …

mac 爱普生打印机驱动_epson l360 mac版驱动下载-爱普生l360驱动Mac版最新版 - 极光下载站...

爱普生l360驱动苹果电脑版是专为mac用户所设计打造&#xff0c; 当你的电脑中安装了本驱动程序以后&#xff0c;就可以非常轻松的进行操作打印了&#xff0c;与该型号的打印机相匹配&#xff0c;将会带给你最流畅的打印体会&#xff01;爱普生l360打印机介绍--打印质量分辨率可…

mysql 生成 javabean_从MySQL快速生成JavaBean

SELECTCONCAT(/**\n*,COLUMN_COMMENT,\n*/\n), -- 注解CONCAT(Column(name ",column_name,")\n), -- JPA字段注解( -- 根据表定义的字段生成相应的 Java类型CASEdata_typeWHEN varcharTHEN private StringWHEN bigintTHEN private IntegerWHEN intTHEN private Inte…

poj2253 Frogger(最短路变型或者最小生成树)

1 /*2 题意&#xff1a;就是源点到终点有多条的路径&#xff0c;每一条路径中都有一段最大的距离&#xff01;3 求这些路径中最大距离的最小值&#xff01;4 5 Dijkstra, Floyd, spfa都是可以的&#xff01;只不过是将松弛的条件变一下就行了&#xff01;6 7 …

python包mdure_Python hashlib模块实例使用详解

这篇文章主要介绍了Python hashlib模块实例使用详解,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下hashlib模块主要的作用&#xff1a;加密保护消息安全&#xff0c;常用的加密算法如MD5&#xff0c;SHA1等。1、…

UVAoj 348 - Optimal Array Multiplication Sequence

1 /*2 题意&#xff1a;矩阵相乘的最少的步数3 dp[i][j]min(dp[i][j], dp[i][k]dp[k1][j]num[i-1]*num[k]*num[j]);4 表示的是第i个矩阵到第j个矩阵相乘的最少步数5 sign[i][j]表示的是第i个矩阵到第j个矩阵相乘的最少步数是由第i个矩阵到第sign[i][j]个矩阵相…

raft协议 MySQL 切换_Raft 协议实战系列(二)—— 选主

注&#xff1a;本文原创&#xff0c;转载请标明出处。欢迎转发、关注微信公众号&#xff1a;Q的博客。 不定期发送干货&#xff0c;实践经验、系统总结、源码解读、技术原理。本文目的笔者期望通过系列文章帮助读者深入理解Raft协议并能付诸于工程实践中&#xff0c;同时解读不…

codeforce Pashmak and Buses(dfs枚举)

1 /*2 题意&#xff1a;n个同学&#xff0c;k个车&#xff0c; 取旅游d天&#xff01;3 要求所有的学生没有两个或者两个以上的在同一辆车上共同带d天&#xff01; 输出可行的方案&#xff01;4 5 对于d行n列的矩阵&#xff0c;第i行第j列表示的是第i天第j个同学所…

怎样用mysql查询测试_如何测试数据库查询优化器

我一直认为&#xff0c;查询优化器(Query Optimizer&#xff0c;后面简称优化器)一直是数据库领域 Top 级别的 hardcore 技术&#xff0c;自己也一直尝试去深入理解&#xff0c;但每每看到 TiDB 代码里面那一大坨 plan 的代码&#xff0c;我就望而生畏了&#xff0c;就像是『可…

poj2060Taxi Cab Scheme(二分图匹配)

1 /*2 题意&#xff1a; 出租车 有一个出发的时间&#xff0c;从点&#xff08;a, b&#xff09;到点&#xff08;c, d&#xff09;&#xff0c;时间为3 abs(a-c)abs(b-d)! 一辆车可以在运完一个乘客后运另一个乘客, 4 条件是此车要在预约开始前一分钟之前到达出发地,…

二级java考什么_计算机二级Java考试资料!

Where领&#xff1f;基本要求1 . 掌握 Java 语言的特点&#xff64;实现机制和体系结构&#xff61;2 . 掌握 Java 语言中面向对象的特性&#xff61;3 . 掌握 Java 语言提供的数据类型和结构&#xff61;4 . 掌握 Java 语言编程的基本技术&#xff61;5 . 会编写 Java 用户界面…

二分匹配最大匹配的理解(附图解)

定义一个PXP的有向图中&#xff0c;路径覆盖就是在图中找一些路径&#xff0c;使之覆盖了图中的所有顶点&#xff0c;且任何一个顶点有且只有一条路径与之关联&#xff1b;&#xff08;如果把这些路径中的每条路径从它的起始点走到它的终点&#xff0c;那么恰好可以经过图中的每…

poj 2226 Muddy Fields(合理建图+二分匹配)

1 /*2 题意&#xff1a;用木板盖住泥泞的地方&#xff0c;不能盖住草。木板任意长&#xff01;可以重叠覆盖&#xff01; *表示泥泞的地方&#xff0c;.表示草&#xff01;3 思路&#xff1a;4 首先让我们回忆一下HDU 2119 Matrix这一道题&#xff0c;一个矩阵…

java验证码工具_java 验证码工具

importjavax.imageio.ImageIO;import java.awt.*;importjava.awt.image.BufferedImage;importjava.io.IOException;importjava.io.OutputStream;importjava.util.Random;public classCaptchaUtils {private final static Object lock newObject();/*** 图片的宽度。*/private …

Floyd算法的理解

转载于:https://www.cnblogs.com/hujunzheng/p/3919226.html

http get post java_java发送http的get、post请求实现代码

Http请求类package wzh.Http;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import java.util.List;import java.util.Map;public class HttpRe…

java string的作用_浅谈java String不可变的好处

一、java内部String类的实现&#xff1a;java 8&#xff1a;public final class Stringimplements java.io.Serializable, Comparable, CharSequence {/** The value is used for character storage. */private final char value[];}java 9 及之后&#xff1a;(使用coder标识了…