标签:优化 http back play rgba 记录 hid string start
题意: 拓扑排序,输出字典序最小的。
思路:优先队列优化。
#include <iostream> #include <vector> #include <queue> #include<string.h> using namespace std; int n, m; const int N=1e5+10; vector<int> out[N]; //入度记录 int in[N]; //出度记录 vector<int>ret; priority_queue<int,vector<int>,greater<int> > q; int topsort(){ while (!q.empty()){ int idx = q.top(); q.pop(); ret.push_back(idx); //抹掉这个点的所有出度边 与入度计数 int _size=out[idx].size(); for (int i=0; i<_size; i++){ int e=out[idx][i]; in[e]--; //该点入度减1 if (in[e] == 0){ q.push(e); } } } } int main() { while(cin >> n >> m){ for (int i = 0; i < m; i++){ int start; int end; cin >> start >> end; in[end]++; out[start].push_back(end); } for (int i = 1; i <= n; i++) { //找到第一个入度为0的点 if (in[i] == 0) { q.push(i); } } topsort(); int _size=ret.size(); for(int i=0; i<_size-1; i++) cout<<ret[i]<<" "; cout<<ret[_size-1]<<endl; ret.clear(); for(int i=1; i<=n; i++){ out[i].clear(); } memset(in,0,sizeof in); } return 0; }
标签:优化 http back play rgba 记录 hid string start
原文地址:https://www.cnblogs.com/sszywq/p/13893041.html