标签:rip 空格 href 个数 mes flag mem 遍历 数据
#include<bits/stdc++.h> using namespace std; int n,m,d[510],x,y; bool f[510][510],flag;// f是建边,也就是存图 priority_queue<int,vector<int>,greater<int> >q;//建立一个小顶堆,升序排列 void BFS() { while(!q.empty()) { int t = q.top(); q.pop(); if(flag) printf(" %d",t); else { printf("%d",t); flag = 1; } for(int i = 1;i <= n; ++i) if(f[t][i])//如果这条边存在,且没遍历过 { f[t][i] = 0;//标记为遍历过 d[i]--;//入度减 if(d[i] == 0) q.push(i); } } } int main() { while(~scanf("%d%d",&n,&m)) { memset(f,0,sizeof(f));//清空图 memset(d,0,sizeof(d));//清空入度 for(int i = 1;i <= m; ++i) { scanf("%d%d",&x,&y); if(!f[x][y])//确保没有重复的边 { f[x][y] = 1;//建边 d[y]++;//入度 } } while(!q.empty())q.pop(); for(int i = 1;i <= n; ++i)//寻找根节点(入度为0) if(!d[i]) q.push(i); flag = 0; BFS();//拓扑狂搜 printf("\n"); } return 0; }
标签:rip 空格 href 个数 mes flag mem 遍历 数据
原文地址:https://www.cnblogs.com/RootVount/p/10803349.html