AcWing 1738. 蹄球 拓扑排序
Posted karshey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 1738. 蹄球 拓扑排序相关的知识,希望对你有一定的参考价值。
竟然是拓扑排序,没想到哇。
有入度的点不会做起点。
#include<bits/stdc++.h>
using namespace std;
#define fir(i,a,n) for(int i=a;i<=n;i++)
const int N=1e2+10;
int n,ans;
int a[N],b[N],rd[N];//入度
int v[N];
void dfs(int u)
v[u]=1;
if(!v[b[u]]) dfs(b[u]);//u能走到的地方没走过
int main()
cin>>n;
fir(i,1,n) cin>>a[i];
sort(a+1,a+1+n);
b[1]=2;b[n]=n-1;//初始化
for(int i=2;i<=n-1;i++)
if(abs(a[i]-a[i-1])<=abs(a[i+1]-a[i])) b[i]=i-1;//要往左走
else b[i]=i+1;
for(int i=1;i<=n;i++)
if(b[i]) rd[b[i]]++;
fir(i,1,n)
if(!rd[i]) //没有球会传给它 所以只有它来传球
ans++;dfs(i);
fir(i,1,n)
if(!v[i])//竟然这个地方没走过 那就给个球
ans++;dfs(i);
cout<<ans;
return 0;
以上是关于AcWing 1738. 蹄球 拓扑排序的主要内容,如果未能解决你的问题,请参考以下文章