hdu-3342-Legal or Not--拓扑排序//两种解法

2024-05-28 02:48

本文主要是介绍hdu-3342-Legal or Not--拓扑排序//两种解法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:点击::here~~~

DFS

#include<stdio.h>
#include<string.h>
int vis[105],map[105][105];
int n,m;
bool dfs(int u)
{vis[u]=-1;for(int v=0;v<n;v++)if(map[u][v]){if(vis[v]<0) return false;else if(!vis[v]&&!dfs(v)) return false;}vis[u]=1; return true;
}
bool toposort()
{memset(vis,0,sizeof(vis));for(int u=0;u<n;u++)if(!vis[u]){if(!dfs(u)) return false;}return true;
}
int main()
{int u,v;while(scanf("%d%d",&n,&m),n,m){memset(map,0,sizeof(map));for(int i=0;i<m;i++){scanf("%d%d",&u,&v);map[u][v]=1;}if(!toposort())  printf("NO\n");else printf("YES\n");}}

二:

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<vector>
using namespace std;
vector<int> g[105];
int indu[105],vis[105];
int n,m;
void toposort()
{int p,flag=0;int k;for(int i=0;i<n;i++){p=0;for(int j=0;j<n;j++){if(indu[j]==0&&!vis[j]){p=1;k=j;vis[k]=1;break;}}if(p!=1){flag=1;break;}for(int r=0;r<g[k].size();r++)  indu[g[k][r]]--;}if(flag) printf("NO\n");else printf("YES\n");
}
int main()
{int u,v;while(scanf("%d%d",&n,&m),n){memset(indu,0,sizeof(indu));memset(vis,0,sizeof(vis));memset(g,0,sizeof(g));for(int i=0;i<m;i++){scanf("%d%d",&u,&v);g[u].push_back(v);indu[v]++;}toposort();}
}



这篇关于hdu-3342-Legal or Not--拓扑排序//两种解法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1009329

相关文章

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

golang实现延迟队列(delay queue)的两种实现

《golang实现延迟队列(delayqueue)的两种实现》本文主要介绍了golang实现延迟队列(delayqueue)的两种实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录1 延迟队列:邮件提醒、订单自动取消2 实现2.1 simplChina编程e简单版:go自带的time

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww

QT6中绘制UI的两种方法详解与示例代码

《QT6中绘制UI的两种方法详解与示例代码》Qt6提供了两种主要的UI绘制技术:​​QML(QtMeta-ObjectLanguage)​​和​​C++Widgets​​,这两种技术各有优势,适用于不... 目录一、QML 技术详解1.1 QML 简介1.2 QML 的核心概念1.3 QML 示例:简单按钮

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式