拓扑排序--家谱树

https://www.luogu.com.cn/problem/B3644

拓扑排序,入度为0入队

然后出队更新出度对应点的入度,重复入队出队

#include
#include
using namespace std;
#define N 100011
typedef long long ll;
typedef pair pii;
int t,n,m; 
struct di
{
	int in,o;
}d[150]; 
vector mp[150],an;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
	int x;
	while(cin>>x&&x)
	{
		mp[i].push_back(x);
		d[i].o++;
		d[x].in++;
	}
}
queue q;

for(int i=1;i<=n;i++)
{
	if(!d[i].in)
	{
		q.push(i);
		an.push_back(i);
	}
}
while(q.size())
{
	int t=q.front();
	q.pop();
	for(int i=0;i

你可能感兴趣的:(算法,c++,数据结构)