For this Question: For a directed acyclic graph (DAG), a topological ordering is a linear ordering of its vertices such that for every directed edge from vertex u to vertex v, u is listed before v.

Given a DAG find the Lexicographically smallest topological ordering.The first line consists of two space-separated integers denoting N and M.
Each of the following M lines consists of two space-separated integers X and Y denoting there is an edge from X directed toward Y.


<b>Constraints</b>
1<=N, M<=200000
1<=X, Y<=NPrint N space separated integers denoting the topological sort.Sample Input
5 6
1 2
1 3
2 3
2 4
3 4
3 5

Sample Output
1 2 3 4 5 , I have written this Solution Code: #include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mp make_pair
#define fi first
#define se second
#define pu push_back
#define sz 2000000
vector<int> NEB[sz],NE[sz];
vector<int> check;
int vis[sz],no[sz];
set<int> ss;
set<int> :: iterator itr;
int main()
{
	
		int n,m;
	cin>>n>>m;
	for(int i=0;i<m;i++)
	{
		int a,b;
		cin>>a>>b;
		no[b]++;
		NEB[a].pu(b);
		NE[b].pu(a);
	}
	
	for(int i=1;i<=n;i++)
	{
		sort(NEB[i].begin(),NEB[i].end());
	}
	for(int i=1;i<=n;i++)
	{
	if(no[i]==0) ss.insert(i);
	}
	
	while(ss.size()>0)
	{
		int pp=*ss.begin();
		ss.erase(ss.begin());
		check.pu(pp);
		for(int i=0;i<NEB[pp].size();i++)
		{
			int l=NEB[pp][i];
			no[l]--;
			if(no[l]==0)
			{
				ss.insert(l);
			}
		}
	}
	for(int i=0;i<n;i++)
	{
		cout<<check[i]<<" ";
	}
	
}, In this Programming Language: C++, Now tell me if this Code is compilable or not?