链接:
题意
一个pair
进行n次查询,查询q是否是p的前置(可以不是直接前置)
解:
就是要把01、12、13这种能转换出02、03,弗洛伊德即可
无环无负权
实际代码:
#include
using namespace std;
vector checkIfPrerequisite(int numCourses, vector>& prerequisites, vector>& queries)
{
vector>edges(numCourses+3,vector(numCourses+3));
for(auto prerequisite:prerequisites) edges[prerequisite[0]][prerequisite[1]]=1;
for(int i=0;ians;
for(auto querie:queries)
{
if(edges[querie[0]][querie[1]]<0x3f3f3f3f) ans.push_back(true);
else ans.push_back(false);
}
return ans;
}
限制:
2 <= numCourses <= 1000 <= prerequisites.length <= (numCourses * (numCourses - 1) / 2)prerequisites[i].length == 20 <= ai, bi <= n - 1ai != bi[ai, bi] 都 不同1 <= queries.length <= 1040 <= ui, vi <= n - 1ui != vi