https://leetcode.com/problems/course-schedule-ii/
Class Solution {public:vector<int> findorder (int numcourses, vector<pair<int, int>>& Prerequis
ITES) {vector<int> res;
Vector<int> Indgree (numcourses,0);
Map<int, vector<int> >adjNode;
int len = Prerequisites.size ();
for (int i = 0; i < len; i++) {pair<int, int> p = prerequisites[i];
Self-ring if (P.first = = P.second) return res;
Parallel Edge if (Find (Adjnode[p.second].begin (), Adjnode[p.second].end (), p.first) = = Adjnode[p.second].end ()) {
Adjnode[p.second].push_back (P.first);
indgree[p.first]++;
}} queue<int> Q;
for (int i=0; i < numcourses; i++) {if (indgree[i] = = 0) Q.push (i); } while (!
Q.empty ()) {int front = Q.front ();
Q.pop ();
Res.push_back (front); vector<int> adj = Adjnode[front];
for (int i:adj) {indgree[i]--;
if (indgree[i] = = 0) {Q.push (i);
}}} if (res.size () = = numcourses) {return res;
} else{return vector<int> (); }
}
};