需要帮助,lny内部题目……
  • 板块灌水区
  • 楼主TJmyf
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/6 19:19
  • 上次更新2023/11/6 19:21:05
查看原帖
需要帮助,lny内部题目……
307793
TJmyf楼主2023/11/6 19:19
#include<algorithm>
#include<iostream>
#include<cstring>
#include<string>
#include<vector>
#include<cstdio>
#include<cmath>
#include<stack>
#include<queue>
#include<set>
#include<map>
#define ll long long
using namespace std;
const int maxn=5e5+10;
ll n,m,s1,s2,t1,t2,d[maxn];
vector<int> e[maxn];
priority_queue<int> q1;
priority_queue<int,vector<int>,greater<int> > q2;
int main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		ll x,y;
		scanf("%d%d",&x,&y);
		e[x].push_back(y);
		d[y]++;
	}
	for(int i=1;i<=n;i++)
	{
		if(d[i]==0)
		{
			q1.push(i);
			q2.push(i);
		}
	}
	while(!q1.empty())
	{
		int x=q1.top();
		cout<<"*"<<x<<endl;
		q1.pop();
		if(x>=t1)
		{
			t1=x;
			s1++;
		}
		for(int i=0;i<e[x].size();i++)
		{
			int y=e[x][i];
			d[y]--;
			if(d[y]==0) q1.push(y);
		}
	}
	while(!q2.empty())
	{
		int x=q2.top();
		q2.pop();
		if(x>=t2)
		{
			t2=x;
			s2++;
		}
		for(int i=0;i<e[x].size();i++)
		{
			int y=e[x][i];
			d[y]--;
			if(d[y]==0) q2.push(y);
		}
	}
	cout<<s1<<"\n"<<s2<<"\n"; 
	return 0;
}
2023/11/6 19:19
加载中...