首页 > 其他分享 >P5318 【深基18.例3】查找文献

P5318 【深基18.例3】查找文献

时间:2023-11-28 20:36:16浏览次数:35  
标签:std cout int 18 深基 tot P5318 edge include

P5318 【深基18.例3】查找文献

基本思路

邻接表实现,结果得为了边有序再专门开一个 vector 预处理完再存边。

而且一开始忘记 vis[1] = true 了!

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>

const int N = 1e6 + 10;

int head[N], tot;
int vis[N];
std::vector<int> temp[N];

struct Node {
	int to, next;
}edge[N];

bool cmp(int x, int y) { return x > y; }

void addEdge(int u, int v)
{
	edge[++tot].to = v;
	edge[tot].next = head[u];
	head[u] = tot;
}

int n, m;

void DFS(int now)
{
	std::cout << now << " ";
	for (int i = head[now]; i ; i = edge[i].next)
	{
		if (!vis[edge[i].to])
		{
			vis[edge[i].to] = true;
			DFS(edge[i].to);
		}	
	} 
}

void BFS()
{
	std::cout << std::endl;
	std::queue<int> q;
	q.push(1);
	while(!q.empty())
	{
		int now = q.front();q.pop();
		std::cout << now << " ";
		for (int i = head[now]; i ; i = edge[i].next)
		{
			if(!vis[edge[i].to])
			{
				vis[edge[i].to] = true;
				q.push(edge[i].to);
			}
		}
	}
}

int main()
{
 	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);
	std::cout.tie(nullptr);
	std::cin >> n >> m;
	for (int i = 1; i <= m; i++) 
	{
		int x, y;
		std::cin >> x >> y;
		temp[x].push_back(y);
	}
	for (int i = 1; i <= n; i++)
	{
		sort(temp[i].begin(), temp[i].end(), cmp);
	}
	for (int i = 1; i <= n; i++)
	{
		for (auto u : temp[i])
		{
			addEdge(i, u);
		}
	}
	vis[1] = true;
	DFS(1);
	std::memset(vis, 0, sizeof(vis));
	vis[1] = true;
	BFS();
	return 0;
}

邻接矩阵

vector 实现的邻接矩阵,显然更自然,毕竟存边完直接排序。

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>

const int N = 1e6 + 10;

int vis[N];
std::vector<int> edge[N];

int n, m;

void DFS(int now)
{
	std::cout << now << " ";
	for (auto to : edge[now])
	{
		if (!vis[to])
		{
			vis[to] = true;
			DFS(to);
		}	
	} 
}

void BFS()
{
	std::cout << std::endl;
	std::queue<int> q;
	q.push(1);
	while(!q.empty())
	{
		int now = q.front();q.pop();
		std::cout << now << " ";
		for (auto to : edge[now])
		{
			if(!vis[to])
			{
				vis[to] = true;
				q.push(to);
			}
		}
	}
}

int main()
{
 	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);
	std::cout.tie(nullptr);
	std::cin >> n >> m;
	for (int i = 1; i <= m; i++) 
	{
		int x, y;
		std::cin >> x >> y;
		edge[x].push_back(y);
	}
	for (int i = 1; i <= n; i++)
	{
		sort(edge[i].begin(), edge[i].end());
	}
	vis[1] = true;
	DFS(1);
	std::memset(vis, 0, sizeof(vis));
	vis[1] = true;
	BFS();
	return 0;
}

标签:std,cout,int,18,深基,tot,P5318,edge,include
From: https://www.cnblogs.com/kdlyh/p/17862947.html

相关文章

  • CVE-2018-2628
    WeblogicWLSCoreComponents反序列化命令执行漏洞(CVE-2018-2628)Oracle2018年4月补丁中,修复了WeblogicServerWLSCoreComponents中出现的一个反序列化漏洞(CVE-2018-2628),该漏洞通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令。漏洞环境cdweblogic/CVE-2018-2......
  • 【LCD驱动】VK1C21系列是抗干扰LCD液晶显示驱动芯片,可驱动32*4/18*4/14*4点 ESD防护能
    产品型号:VK1C21A/B产品品牌:永嘉微电/VINKA封装形式:SSOP48/LQFP48可定制裸片:DICE(COB邦定片);COG(邦定玻璃用)产品年份:新年份原厂,工程服务,技术支持! 概述:VK1C21A/B是一个点阵式存储映射的LCD驱动器,可支持最大128点(32SEGx4COM)的LCD屏,也支持2COM和3COM的LCD屏。单片机可通过......
  • 国标GB28181安防监控平台EasyCVR周界入侵AI算法检测方案
    在城市管理和公共安全领域,安全视频监控的重要性日益凸显。AI视频智能分析平台基于深度学习和计算机视觉技术,利用AI入侵算法,能够实时、精准地监测周界入侵行为。TSINGSEE青犀在视频监控及AI视频智能分析领域拥有深厚的技术积累和丰富的实践经验。其中,AI视频智能分析系统/AI算法中......
  • CF1864H Asterism Stream
    首先讲点正常想的到的做法。首先转化成:计数*+*+**+**的序列,要求在序列最后一个操作后恰好\(\gen\),每个序列的贡献是\(\frac{1}{2^{len}}\)。枚举总共有多少个*;枚举最后一个+之后有多少个*。这样,最后一个+的贡献是确定的,那限制就是在最后一个+之前要求数字......
  • CF1854A1 Dual (Easy Version)
    如果你是没有思路,但是还是想自己做出来,以下有几个提示(请看完一个提示之后,再想不出来再看接下来的提示)。##提示1>对于easyversion,有多种解决方案。不管是哪种解决方案,请思考:怎样得到$a_i\lea_{i+1}$?##提示2>举个例子,你可以试着使用序列中的一个**正数**将$a_{i+1}$......
  • 国标GB28181安防视频平台EasyGBS现场突发播放中断是什么原因?
    视频流媒体安防监控国标GB28181平台EasyGBS视频能力丰富,部署灵活,既能作为业务平台使用,也能作为安防监控视频能力层被业务管理平台调用。国标GB28181视频EasyGBS平台可提供流媒体接入、处理、转发等服务,支持内网、公网的安防视频监控设备通过国标GB/T28181协议进行视频监控直播。最......
  • 番外-软件设计(18)
    旅游的出行方式有乘坐飞机旅行、乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式。实验要求:1. 提交源代码;packagetest23; publicclassAirplaneStrategyimplementsTravelStrategy{     publicvoidtravel()......
  • 7-1896C - Matching Arrays
    题意:两个数组\(a和b\),对\(b\)任意排序,使得\(a[i]>b[i]的个数为x\),要求输出能满足的数列。思路:一个任意排序,相当于两个任意排序,都升序,发现规律,\(让排序后的b数组,循环右移x位置\),满足条件则输出,否则一定不满足。代码:点击查看代码#include<bits/stdc++.h>#defineintlong......
  • 2023-2024-1 学号20231318《计算机基础与程序设计》第九周学习总结
    作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业要求在哪里2022-2023-1计算机基础与程序设计第九周作业这个作业的目标自学教材《计算机科学概论》第10、11章以及《C语言程序设计》第8章并完成云班课测试。作业正文2023-2024-1学号202......
  • 2023-2024-1 20231418 《计算机基础与程序设计》第9周学习总结
    2023-2024-120231418《计算机基础与程序设计》第9周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP这个作业要求在哪里https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/13005这个作业的目标《计......