个人主页哪个网站好,微信公众号开发软件,怎么做本地网站,wordpress出于安全考虑前言#xff1a; 这是道图论题#xff0c;当然#xff0c;搜索也行#xff1b; 做题的中心我放在拓扑排序上 需要帮助吗#xff08;什么是拓扑排序#xff1f;#xff09; 分析#xff1a; 拓扑排序的模板一个#xff01;#xff01;#xff01; 题目#xff1a;P1… 前言 这是道图论题当然搜索也行 做题的中心我放在拓扑排序上 需要帮助吗什么是拓扑排序 分析 拓扑排序的模板一个 题目P1137 旅行计划 代码 /*
说真的其实这道题很简单就是拓扑排序后把每个点的“等级”
输出一遍问题是拓扑排序是什么
队列啊
因为我也解释不清 qwq
*/#includeiostream
#includequeueusing namespace std;
queueint q;
//存链表不能停
struct lian{int to;int next;
}lb[200010];
int le[201000];//等级
int head[200100];
int t0;
int n,m,ans;
int ind[200100];//入度
void add(int from,int to){lb[t].nexthead[from];// 指向的下一条边的下标 lb[t].toto;//指向的点 head[from]t;//出发点所连的第一条边的编号
}//既然你会看这个就一定会链表吧
int main(){cinnm;for(int i1;im;i){int k,j;cinkj;add(k,j);ind[j];//统计入度 }for(int i1;in;i){if(!ind[i]){//找到无入边的点 q.push(i);//压进队列 le[i]1;}}//拓扑排序 while(q.size()){int u;uq.front();q.pop();for(int ihead[u];i;ilb[i].next)//遍历所连的边 {int vlb[i].to;//找到指向的点 le[v]max(le[v],le[u]1);//计算该点的等级 if(!--ind[v]) q.push(v);//减入度删边为零则压入 }}for(int i1;in;i)coutle[i]endl;//输出等级 } 很清楚明了吧 在MIKU小姐的帮助下一个小时做完了 THANKS FOR YOUR READING THATS ALL. 转载于:https://www.cnblogs.com/For-Miku/p/10505643.html