请大佬帮我分析下这个流程,速度求答,谢谢

#include
#include
#include
#include
#include

using namespace std;

static const int MAX = 100000;
static const int inf= 1<<29;

vector G[MAX];
listout;
bool V[MAX];
//list out;
int N;
int indeg[MAX];

void bfs(int s)
{
queue q;
q.push(s);
V[s] = true;
while(!q.empty())
{
int u = q.front();
q.pop();
out.push_back(u);
for(int i= 0; i< G[u].size(); i++)
{
int v= G[u][i];
indeg[v]--;//度
if(indeg[v]== 0 && !v[V])
{
V[v] = true;
q.push(v);
}
}
}
}

void tsort()
{
for(int i= 0; i< N ; i++)
{

indeg[i] = 0;

}
for(int u= 0; u< N; u++)
{
for(int i= 0; i< G[u].size(); i++)
{
int v = G[u][i];
indeg[v]++;
}
}
for(int u= 0; u< N; u++)
{
if(indeg[u] == 0 && !V[u])
bfs(u);
}
for(list :: iterator it = out.begin(); it != out.end(); it++ )
{
cout<<*it< }
}
int main()
{
int s, t, M;
cin>>N>>M;

for(int i =0; i< N; i++)
V[i] = false;

for(int i= 0; i< M; i++)
{
    cin>>s>>t;
    G[s].push_back(t);
}
tsort();

}