算法训练营|图论第8天 拓扑排序 dijkstra

题目:

拓扑排序

题目链接:

117. 软件构建 (kamacoder.com)

代码:

cpp 复制代码
#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
int main() {
	int n, m;
	cin >> n >> m;
	vector<int>inDegree(n, 0);
	unordered_map<int, vector<int>>myMap;
	vector<int>result;
	for (int i = 0; i < m; i++) {
		int s, t;
		cin >> s >> t;
		inDegree[t]++;
		myMap[s].push_back(t);
	}
	queue<int>que;
	for (int i = 0; i < n; i++) {
		if (inDegree[i] == 0) {
			que.push(i);
		}
	}
	while (!que.empty()) {
		int cur = que.front();
		que.pop();
		result.push_back(cur);
		vector<int>files = myMap[cur];
		if (files.size() != 0) {
			for (int i = 0; i < files.size(); i++) {
				inDegree[files[i]]--;
				if (inDegree[files[i]] == 0) {
					que.push(files[i]);
				}
			}
		}
	}
	if (result.size() == n) {
		for (int i = 0; i < n - 1; i++) {
			cout << result[i] << ' ';
		}
		cout << result[n - 1] << endl;
	}
	else {
		cout << -1 << endl;
	}
}

题目:

dijkstra

题目链接:

47. 参加科学大会(第六期模拟笔试) (kamacoder.com)

代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main() {
	int n, m, s, e, v;
	cin >> n >> m;
	vector<vector<int>>grid(n + 1, vector<int>(n + 1, INT_MAX));
	for (int i = 0; i < m; i++) {
		cin >> s >> e >> v;
		grid[s][e] = v;
	}
	vector<int>minDist(n + 1, INT_MAX);
	vector<bool>visited(n + 1, false);
	int start = 1;
	int end = n;
	minDist[start] = 0;
	for (int i = 1; i <= n; i++) {
		int minVal = INT_MAX;
		int cur = 1;
		for (int v = 1; v <= n; v++) {
			if (!visited[v] && minDist[v] < minVal) {
				cur = v;
				minVal = minDist[v];
			}
			visited[cur] = true;
			for (int v = 1; v <= n; v++) {
				if (!visited[v] && grid[cur][v] != INT_MAX && minDist[cur] + grid[cur][v] < minDist[v]) {
					minDist[v] = minDist[cur] + grid[cur][v];
				}
			}
		}
	}
	if (minDist[end] == INT_MAX) cout << -1 << endl;
	else {
		cout << minDist[end] << endl;
	}
}
相关推荐
popcorn_min18 小时前
Digits 手写数字识别:随机森林多分类 + 像素级特征热力图
算法·随机森林·分类
liulilittle19 小时前
拥塞控制:排水终止的两种决策:OR 与 AND
网络·tcp/ip·计算机网络·算法·信息与通信·tcp·通信
花间相见19 小时前
【LeetCode02】—— 两数之和:哈希表入门经典详解
数据结构·散列表
weixin_3077791320 小时前
从脚本执行到智能体协作:AI辅助测试能力的范式重构
运维·开发语言·人工智能·算法·测试用例
量化君也20 小时前
从回测到全自动实盘交易,全天候策略需要经历哪些改造?
大数据·人工智能·python·算法·金融
fox_lht20 小时前
第十五章 函数式语言:迭代器和闭包
开发语言·后端·学习·算法·rust
zhengzhouliuhaha21 小时前
智能医疗设备控费系统:以全院一体化管控,筑牢医疗资源“安全阀”
大数据·数据结构·人工智能·算法·安全·机器学习·软件需求
June`21 小时前
CUDA程序效率如何计算以及工具如何使用
算法·cuda
兰令水21 小时前
leecodecode【树形DP】【2026.6.11打卡-java版本】
java·算法·深度优先
装不满的克莱因瓶21 小时前
RLHF中的PPO算法——大语言模型对齐优化的核心引擎
人工智能·python·深度学习·算法·机器学习·语言模型·自然语言处理