题干在这里:https://www.luogu.org/problemnew/show/P1983
啊啊啊啊,又是洛谷的网站!!!
好了,言归正传,这道题,刚刚拿到的时候简直是一点思路都没有,毫无头绪!!!思考了良久,终究在模拟赛的三个小时中败下阵来。。。
之后,经过老师的一番讲解之后,原来这道题是拓扑排序,震惊!!!
至于拓扑排序是什么嘛,在这里就不科普了,度娘永远是最好的答案~~~,每一次只要找入度为零的点去更新其他的点就行了(好像在2017年的提高组初赛中在最后一题就是本题的解法,六六六!!!)
直接附上代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
const int maxN=1010;
int b[maxN][maxN];
int n,m,a[maxN][maxN],num;
int stop[maxN],unstop[maxN],len[maxN];
int degree[maxN],queue[maxN],head,tail;
bool graph[maxN][maxN],f[maxN];
int main()
{
//freopen("level.in","r",stdin);
//freopen("level.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=m;++i){
cin>>a[i][0];
int st,en,n1=0,n2&