TopologicalSort
const int Max=100;
vector<int> graph[Max]; //邻接表实现图。
int indegree[Max]= {0};
bool TopologicalSort(int n) {
queue<int> node;
for(int i=0; i<n; i++) {
if(indegree[i]==0) {
node.emplace(i);
}
}
int n1=0;
while(!node.empty()) {
int u=node.front();
node.pop(); //删掉度为0的点。
n1++;
for(int i=0; i<graph[u].size(); i++) {
int v=graph[u][i];
indegree[v]--; //删掉以度为0为起点的边。
if(indegree[v]==0) {
node.emplace(v);
}
}
}
return n==n1;
}
vector<int> graph[Max]; //邻接表实现图。
int indegree[Max]= {0};
bool TopologicalSort(int n) {
queue<int> node;
for(int i=0; i<n; i++) {
if(indegree[i]==0) {
node.emplace(i);
}
}
int n1=0;
while(!node.empty()) {
int u=node.front();
node.pop(); //删掉度为0的点。
n1++;
for(int i=0; i<graph[u].size(); i++) {
int v=graph[u][i];
indegree[v]--; //删掉以度为0为起点的边。
if(indegree[v]==0) {
node.emplace(v);
}
}
}
return n==n1;
}