首页 > 编程语言 > 详细

拓扑排序的vector

时间:2019-02-05 18:43:35      阅读:259      评论:0      收藏:0      [点我收藏+]

#include <bits/stdc++.h>
#define inf 1e9
#define lll long long int
using namespace std;
vector <int> q[100];
int n,rudu[100],p,ans[100],k;
bool f[100];
queue <int> qq;
void tuopu(){
 while(!qq.empty()){
  int x=qq.front();
  qq.pop();
 f[x]=0;
  ans[++p]=x;
//  cout<<x<<" "<<q[x].size()<<" ";
  for(int i=0;i<q[x].size();i++){
   int m=q[x][i];
   rudu[m]--;
   if(!rudu[m]&&!f[m]) {
    qq.push(m);
    f[m]=1;
   }
  }
 }
}
int main(){
ios::sync_with_stdio(0);
cin>>n;
for(int i=1;i<=n;i++){
 while(1){
  cin>>k;
  if(!k) break;
  else{
  q[i].push_back(k);
  rudu[k]++;
  }
 }
}
for(int i=1;i<=n;i++)
if(!rudu[i]) {
 qq.push(i);
// f[i]=1;
}
 tuopu();
for(int i=1;i<=p;i++){
 cout<<ans[i];
}
return 0;
}

本来写了一个超好超详细的博客,突然一卡,全没了///////

不想再写了

注意  p++,和++p;

vector是从0开始遍历的,vector.size()前不能加等号

快哭了

拓扑排序的vector

原文:https://www.cnblogs.com/sc-pyt-2021-theworld/p/10352953.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!