每日一题之图

图的遍历

题目描述

给出 N N N 个点, M M M 条边的有向图,对于每个点 v v v,求 A ( v ) A(v) A(v) 表示从点 v v v 出发,能到达的编号最大的点。

输入格式

1 1 1 2 2 2 个整数 N , M N,M N,M,表示点数和边数。

接下来 M M M 行,每行 2 2 2 个整数 U i , V i U_i,V_i Ui,Vi,表示边 ( U i , V i ) (U_i,V_i) (Ui,Vi)。点用 1 , 2 , … , N 1,2,\dots,N 1,2,,N 编号。

输出格式

一行 N N N 个整数 A ( 1 ) , A ( 2 ) , … , A ( N ) A(1),A(2),\dots,A(N) A(1),A(2),,A(N)

样例 #1

样例输入 #1

4 3
1 2
2 4
4 3

样例输出 #1

4 4 3 4

提示

  • 对于 60 % 60\% 60% 的数据, 1 ≤ N , M ≤ 1 0 3 1 \leq N,M \leq 10^3 1N,M103
  • 对于 100 % 100\% 100% 的数据, 1 ≤ N , M ≤ 1 0 5 1 \leq N,M \leq 10^5 1N,M105
#include<iostream>
using namespace std;
int s[1001][1001]={0};
	int find(int f, int a, int s[1001][1001]){  
	    int m = f;  
	    for(int i = 1; i <= a; i++){  
	        if(s[f][i] == 1 && find(i, a, s) > m){  
	            m = find(i, a, s); 
	        }  
	    }  
	    return m;  
	}
int main(){
	int a,b;
	cin>>a>>b;
	for(int i=0;i<b;i++){
		int c,d;
		cin>>c>>d;
		s[c][d]=1;
	}
	for(int i=1;i<=a;i++){
		cout<<find(i,a,s)<<" ";
	}
	return 0;
} 
### 关于C语言选择题练习的相关资源 对于希望提高C语言能力的学习者来说,通过做选择题可以快速掌握基础知识并检验自己的理解程度。以下是关于C语言选择题的一些推荐方向和相关内容: #### 资源推荐 1. **《C语言入门必刷100题》系列** 这一系列包含了丰富的编程实践题目[^1],虽然主要以实际编码为主,但在其中也穿插了一些理论性的选择题,帮助巩固基本概念。 2. **《C C++最全每日亿题》** 此系列不仅提供了大量的编程实战训练,还特别针对初学者设计了许多基础知识的选择题练习[^4]。这些题目覆盖了变量、数据类型、控制结构等多个方面。 3. **字符串处理专题** 题目描述中提到的一个典型例子是统计字符串中的不同字符种类[^2]。这类问题可以通过设置多项选项来考察学生对件判断的理解以及逻辑思维能力。 4. **算法与程序设计教程** 结合具体实例进行讲解的文章通常会附带测试性质的小测验[^3],这对于想要全面了解某一特定主题下的各种可能性非常有帮助。 #### 示例代码片段 下面给出一段简单的示例代码用于展示如何利用if-else语句完成基于件分支的操作: ```c #include <stdio.h> int main() { int i; for (i = 1; i <= 10; ++i) { if (i % 3 != 0){ printf("%d ", i); } else{ continue; } } return 0; } ``` 该段代码展示了当`i`能够被3整除时跳过打印操作的过程。 #### 总结 为了更好地准备C语言考试或者自我评估水平,建议综合运用上述提到的各种资源来进行系统化的复习和练习。同时注意积累常见错误案例以便加深印象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值