拓扑排序
848. 有向图的拓扑序列
题目链接
https://www.acwing.com/problem/content/850/
解析
要掌握拓扑排序的基本思路:每次找到入度为0的点加入队列,可以用数组存答案,根据加入队列的数的个数可以判断是否可以进行拓扑排序。
Ac代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
const int N = 1e5 + 10;
int h[N], e[N], ne[N], idx;
int n, m;
int du[N], ans[N], x;
void add(int a, int b){
e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
}
bool topsort()
{
queue<int> q;
for(int i = 1; i <= n; i ++)
if(du[i] == 0) q.push(i);
while(q.size()){
auto t = q.front(); q.pop();
ans[x ++] = t;
for(int i = h[t]; i != -1; i = ne[i]){
int j = e[i];
du[j] --;
if(!du[j]){
q.push(j);
}
}
}
if(x < n) return false;
return true;
}
int main()
{
scanf("%d%d", &n, &m);
memset(h, -1, sizeof h);
while(m --){
int a, b;
scanf("%d%d", &a, &b);
add(a, b);
du[b] ++;
}
if(!topsort()){
printf("-1\n");
}
else{
for(int i = 0; i < x; i ++) printf("%d ", ans[i]);
puts("");
}
return 0;
}
1738 蹄球
题目链接
https://www.acwing.com/problem/content/description/1740/
解析
需要给球的情况有两种,一种是入度为0的点,一种是两个来回传的情况,通过dfs进行一种一种的判断。
思维上的bug有:竟然没有想到可以提前处理出来传球方向,太傻了,给了一个题,可以得到哪些数据要搞清楚。
Ac代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 110;
int n;
int a[N], ne[N], du[N];
bool st[N];
void dfs(int x){
st[x] = true;
if(!st[ne[x]]) dfs(ne[x]);
}
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i ++) scanf("%d", &a[i]);
sort(a + 1, a + n + 1);
ne[1] = 2, ne[n] = n - 1;
du[2] ++, du[n - 1] ++;
for(int i = 2; i < n; i ++){
if(a[i] - a[i - 1] <= a[i + 1] - a[i]) ne[i] = i - 1, du[i - 1] ++;
else ne[i] = i + 1, du[i + 1] ++;
}
int cnt = 0;
for(int i = 1; i <= n; i ++)
if(du[i] == 0) cnt ++, dfs(i);
for(int i = 1; i <= n; i ++)
if(!st[i]) cnt ++, dfs(i);
printf("%d\n", cnt);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架