确定比赛名次(拓扑排序)

【ACM- OJ】《确定比赛名次》C++ 【ACM- OJ】《确定比赛名次》C++题目描述输入输出样例输入样例输出AC代码 题目描述 有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。 输入 输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示队伍的个数,M表示接着有M行的 阅读详情
Problem Description
有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。

Input

输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示队伍的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即P1队赢了P2队。

Output

给出一个符合要求的排名。输出时队伍号之间有空格,最后一名后面没有空格。

其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。

Sample Input


 
4 3 1 2 2 3 4 3

Sample Output


 
1 2 4 3
 
//题意:有n个队伍,进行m场比赛,输出队伍的排名.
//思路:使用拓扑排序,将n看成节点数,m看成有向边,再利用邻接矩阵来储存

import java.util.Scanner;

public class P1285 {
	static int n,m;
	static int arc[][]; //有向边(弧)集合,如果P1赢P2则用 P1-->P2的弧来表示
	static int sorted[]; //所有顶点是否排序的状态
	static int degree[]; //每个顶点的入度
	
	static Scanner sc = new Scanner(System.in);
	
	/**
	 * 图的输入及初始化
	 */
	public static void init(){
		sorted = new int[n];//所有节点的排序状态,0表示未排序
		degree = new int[n];//所有节点的入度初始化为0
		
		//输入图
		arc = new int[n][n]; //用邻接矩阵来表示图
		for(int i=0;i<m;i++){
			int a = sc.nextInt()-1;
			int b = sc.nextInt()-1;
			if(arc[a][b]==0){//防止出现重边
				arc[a][b]=1; //1代表a->b有一条边
				degree[b]++;//把b的入度加1
			}
		}
	}
	
	//图的输入及初始化
	public static void topoSort(){
		int s=0; //已经排序的节点个数
		
		while(s<n){
			
			//从序号0开始,如果发现一个顶点,它的入度为0且未排序,则跳出循环。循环后面把它排出且 把它发出的弧消去(对方的入度-1)
			
			//这一段只是找出本轮将要排序的节点i
			int i=0;
			for( ;i<n;i++){
				if(degree[i]==0 && sorted[i]==0){
					break;
				}
			}
			
			if(i==n){//表示有回路,无解
				System.out.println("图中存在回路,无法拓扑排序!");
				return;
			}
			
			//这一段对节点i进行出栈(排出)
			sorted[i]=1;//标记已经排了
			s++;
			//消边(把i发送的所有边都消掉)---把对方的入度-1
			for(int j=0;j<n;j++){
				if(arc[i][j]==1){
					degree[j]--; //把对方的入度-1
				}
			}
			//输出当前出栈节点i
			if(s<n){
				System.out.print(i+1+" ");
			}else{
				System.out.println(i+1);
			}
		}
		
	}
	
	public static void main(String[] args) {
		while(sc.hasNext()){
			n = sc.nextInt(); //n个顶点
			m = sc.nextInt(); //m场比赛即m条弧
			init();//图的输入及初始化
			topoSort();//拓扑排序及输出结果
		}
	}
}
Spring Boot 与 Redisson 版本适配深度解析 Spring Boot 与 Redisson 的版本适配是一个动态演进的过程。开发者需要密切关注两者官方的版本更新日志,建立完善的版本验证机制。本文提供的适配方案基于当前最新技术状态(2024年1月),建议在实际生产环境中通过灰度发布策略验证版本兼容性。只有深入理解底层技术原理,才能在分布式系统的星辰大海中稳健航行。延伸阅读Spring Boot 官方迁移指南。 阅读详情

相关推荐

单窗算法的地表温度反演:谷歌地球引擎GEE代码

该论文基于Statistical Mono-Window(SMW)算法,对地表温度加以求解。其中,简单地说,SMW算法即是通过简单的线性关系,对由单热红外波段所得的大气表观亮温与地表温度之间的经验关系加以表示,从而计算得到LST。

2301_78834737的博客 549

确定比赛名次——(拓扑排序)

拓扑排序 一.大致思路 1.将入度为0的点压入队列,将V0压入队列 2.取出队首元素V0,将V1,V3,V4的入度减1; 3.再次判断入度为0的点,将V1压入队列 4.取出队首元素V1,V3的入度减1; 5.再次判断入度为0的点,将V3压入队列; 6.取出队首元素V3,V4和V2的入度减1; 7.再次判断入度为0的点,将V4和V2压入队列 8.取出队首元素V4或V2(具体先取出那个根据题目要求判...

cxylyq526的博客 419

开源生成式推荐框架MiniOneRec实践:从SID构建到RL微调全解析

在推荐系统领域,从协同过滤到深度学习,核心目标始终是精准预测用户兴趣。其技术原理经历了从矩阵分解到深度神经网络的演进,旨在从海量用户行为数据中挖掘复杂模式。随着大语言模型(LLM)的兴起,生成式推荐作为一种新兴范式,将推荐问题重构为序列生成任务,展现出更强的泛化能力和端到端优化潜力,尤其适合处理动态、多模态的推荐场景。本文聚焦于首个完全开源的生成式推荐框架MiniOneRec,它通过引入语义商品ID(SID)解决物品离散化难题,并采用监督微调(SFT)与强化学习(RL)结合的完整训练流程,为工程师和研究者提

weixin_42573647的博客 533

拓扑排序算法应用

拓扑排序算法应用题,助力理解算法

goodgood_UP的博客 622

Codesys 3.5报警功能配置保姆级教程:从变量定义到确认方式(含REF/ACK详解)

本文详细介绍了Codesys 3.5报警功能的配置流程,从变量定义到确认方式的选择,特别解析了REF和ACK两种确认方式的底层逻辑。通过实战案例和代码示例,帮助工程师快速掌握报警系统的搭建与调试技巧,提升工业自动化项目的可靠性。

weixin_29245767的博客 458

5分钟搞定CST周期性结构仿真:共面波导色散曲线快速生成技巧

本文提供了一套在CST Studio Suite中快速仿真周期性结构并生成色散曲线的标准化流程。针对共面波导设计,重点解析了周期性边界条件的核心设置、本征模求解器(JDM算法)的优化技巧,以及通过参数扫描与后处理模板实现自动化,旨在帮助射频与微波工程师在5分钟内高效完成关键性能验证。

blue的专栏 1245

拓扑排序--确定比赛名次

TopologicalSort Hdu 3342,1285 1285题目 有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。 Input 输入有若干组,每组...

爱草莓的团长的博客 1361

机器学习面试笔试求职必背!八股文(1/5)

算法工程师,技术软件类求职机器学习必背八股文 更多算法/业务/HR面等笔试题面试题 —— >个性签名自取! 1. 特征工程: 1.1 为什么要对特征做归一化处理: Feature scaling,常见的提法有“特征归一化”、“标准化”,是数据预处理中的重要技术。特征间的单位(尺度)可能不同,比如身高和体重,比如摄氏度和华氏度,比如房屋面积和房间数,一个特征的变化范围可能是[ 1000 , 10000 ] [1000, 10000][1000,10000],另一个特征的变化范围可能是[ −.

大厂offer宝典 1万+

确定比赛名次

有N个比赛队(1&lt;=N&lt;=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。 Input 输入有若干组,每组中的第一行为二个数N(1&lt;=N&lt;=500),M;其中N表示...

沈君乱 224

Spring Boot 集成 Spring AI:实现可被大模型调用的 MCP Server

本文介绍了如何利用Spring AI框架构建MCP Server,使大模型能够调用业务系统的接口。主要内容包括:1)MCP协议简介,分为MCP Server和Client两部分;2)环境配置要求,需Java 17+和Spring Boot 3.5.0+;3)实现步骤,通过@McpTool注解将Service方法暴露给大模型调用;4)使用Cherry Studio作为MCP Client测试效果,成功实现订单查询和下单功能。本文仅实现MCP Server部分,后续将介绍如何开发MCP Client。

iioSnail的博客 2125

数据处理和分析之数据预处理:数据离散化

在某些情况下,根据业务知识或数据特性,我们可能需要自定义离散化的区间。例如,对于年龄特征,我们可能更关心儿童、青少年、成人和老年人这几个阶段,因此可以自定义这些区间。等宽离散化:将数据范围分成等宽的区间。等频离散化:将数据分成包含相同数量观测值的区间。聚类离散化:使用聚类算法(如K-means)来确定离散化区间。自定义区间离散化:根据领域知识或数据特性手动定义区间。# 自定义区间离散化示例# 假设我们根据业务理解,将年龄分为青年、中年和老年三个阶段。

2401_87715305的博客 933

拓扑排序-确定比赛名次

简单的拓扑排序裸题 确定比赛名次 #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <queue> using namespace std; const int MAX=...

qq_43731011的博客 355

遗传算法(Genetic Algorithm)详解与实现

遗传算法(Genetic Algorithm, GA)是受自然进化原理启发的一系列搜索算法。通过模仿自然选择和繁殖的过程,遗传算法可以为涉及搜索、优化和学习的各种问题提供高质量的解决方案。同时,它们类似于自然进化,因此遗传算法可以克服传统搜索和优化算法遇到的一些障碍,尤其是对于具有大量参数和复杂数学表示形式的问题。

盼小辉丶的博客 24万+

杭电1285——拓扑排序——确定比赛名次

拓扑排序——确定比赛名次 有N个比赛队(1&amp;amp;lt;=N&amp;amp;lt;=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。 Input 输入有若干组,每组中的第一行为二个数N(1&amp;amp;lt;=N&amp;amp;lt;=5...

博客——XiaoTang 395

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HDU 1285 确定比赛名次(拓扑排序)

确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 18395    Accepted Submission(s): 7366 Problem Description 有N个比赛队(1   Input

HHH的专栏 508

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

拓扑排序-确定比赛名次(模板)(poj1285)

确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 31471 Accepted Submission(s): 12398 Problem Description 有N个比赛队(1&lt;=N&lt;=500),编...

加油吧,少年! 249

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【拓扑排序】HDU 1285 确定比赛名次

HDU 1285 确定比赛名次 Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。 INPUT 输入有若干组,每组中...

boke_ggboy 254

hdoj 1285 确定比赛名次【拓扑排序】

确定比赛名次 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 110   Accepted Submission(s) : 68 Problem Description 有N个比赛队(1   Inp

平平淡淡才是真 739

确定比赛名次--拓扑排序的输出

确定比赛名次–邻接链表-有向无环图-拓扑排序-小顶堆 题目描述 有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。 输入: 输入有若干组,每组中的第一行为二...

jindayue的博客 314

hdu1285 - 确定比赛名次 (拓扑排序)

确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12694    Accepted Submission(s): 5101 Problem Description 有N个比赛队(1   Inp

ITCTO-疯男的优快云博客 690

hdu1285 确定比赛名次 (拓扑排序)

确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 16782    Accepted Submission(s): 6659 Problem Description 有N个比赛队(1  

苏苏爱自由 2045

确定比赛名次(拓扑排序)

http://acm.hdu.edu.cn/showproblem.php?pid=1285 确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 16504Accepted Submission(s): 6534 P...

weixin_30633405的博客 124

[HDU1285] 确定比赛名次(拓扑排序)

传送门:确定比赛名次 拓扑排序。需要注意的是,需要采用greater优先级的优先级来决定下一步拓展的结点,因为未指定优先级的优先队列采用的是less优先级,无重载的情况下是大值先输出,而题目要求为字典序最小,所以我们希望它能够使得小值先输出,于是就要用到greater优先级来实现这个目标。 #include <bits/stdc++.h> #define ll long long...

坤斤拷的博客 246

1285 确定比赛名次【拓扑排序】

确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17239    Accepted Submission(s): 6860 Problem Description 有N个比赛队(1

希望的专栏 550

HDU_1285_确定比赛名次(拓扑排序)

确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 14762    Accepted Submission(s): 5902 Problem Description 有N个比赛队(1   Inp

一点也不二 711

确定比赛名次(拓扑排序)HDU - 1285

题目:确定比赛名次 vjudge提交链接 题意: ——n支队伍,给出m行对战信息。 每行a,b表示a队赢了b队。 输出一个符合要求的队伍排名。 注意:若符合条件的排名不唯一,编号小的队伍在前。 注意:数据可能存在重复。 数据范围:n<=500。 题解: 若n的范围如题目所示,暴力+拓扑排序。 注意事项: 去重用sort排序或者二维数组标记都行。 一次只排一个队伍的名次,不然会错的。 若n超过十万,sort排序+邻接表+优先队列+拓扑排序 解释: sort排序:数据去重。 邻接表:存队伍信息。 优先队

Helinshan的博客 750
上一篇: BFS(普通队列与循环队列实现)--- 油田问题
下一篇: 希尔排序-Java版
splendor.s
博客等级 码龄10年 91粉丝 67原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值