题意:
- 给你n个变量,m种大小关系,依次加入这些关系。
- 如果在给出第i个关系后能确定这些关系自相矛盾(环)输出i。
- 如果在给出第i个关系后能得出这n个数的大小关系,输出i,并且输出这n个数的大小关系。
- 如果m个关系全部给出还不能判断,输出不能判断。
题解:
首先建图:如果a<b,就从a连接一条边到b。这样就得到一个DAG。
如果DAG拓扑有序,说明不存在环。如果DAG不存在环,说明拓扑有序,这两个是充要条件。
所以直接对子图topsort保存答案,如果图的top序数目小于顶点数目,说明有环。//判环
如果队列在同一时刻保存了两个节点,此时关系一定是不确定的,像下面的图(本题的关键)。
#include <cstdio>
#include <string>
#include <cstring>
#include <queue>
#include <iostream>
#define pb push_back
using namespace std;
const int maxn = 40;
int d[maxn],p[maxn],n,vis