Untitled
unknown
c_cpp
a year ago
1.2 kB
4
Indexable
#include <bits/stdc++.h> using namespace std; #define ll long long void solve() { int n; int m; cin>>n;cin>>m; vector<vector<int>>adj(n); vector<int>indegree(n); for(int i=0;i<m;i++){ int a; int b; cin>>a; cin>>b; adj[a-1].push_back(b-1); indegree[b-1]++; } priority_queue<int ,vector<int>,greater<int>>q; vector<int>topo; for(int i=0;i<n;i++){ if(indegree[i]==0){ q.push(i); } } vector<pair<int,int>>ans; while(!q.empty()){ int node=q.top(); topo.push_back(node); q.pop(); for(auto it:adj[node]){ indegree[it]--; if(indegree[it]==0){ q.push(it); } } } int sz=topo.size(); for(int i=0;i<sz;i++){ ans.push_back({topo[i],i+1}); } sort(ans.begin(),ans.end()); for(auto&it:ans){ cout<<it.second<<" "; } } int main() { int t=1; // cin >> t; while (t--) { solve(); } return 0; }
Editor is loading...
Leave a Comment