链接:
题意:
有向无环图,给出一个边数组
找出最小点集可以到达所有点
而且答案一定存在且唯一
解:
简单的思维题,就是找入度为0的点(从其他点抵达不了的点)
答案一定存在且唯一,莽!
实际代码:
#include<bits/stdc++.h>
using namespace std;
vector<int> findSmallestSetOfVertices(int n, vector<vector<int>>& edges)
{
vector<int>temp(n,0);
for(auto i:edges)
{
temp[i[1]]++;
}
vector<int>ans;
for(int i=0;i<n;i++)
{
if(temp[i]==0) ans.push_back(i);
}
return ans;
}
int main()
{
int n;cin>>n;
vector<vector<int>> edges;
int a,b;vector<int>temp;
while(cin>>a>>b)
{
temp.clear();
temp.push_back(a);
temp.push_back(b);
edges.push_back(temp);
}
vector<int>ans=findSmallestSetOfVertices(n,edges);
for(auto i:ans)
{
cout<<i<<endl;
}
}
限制:
-
2 <= n <= 10^5
-
1 <= edges.length <= min(10^5, n * (n - 1) / 2)
-
edges[i].length == 2
-
0 <= fromi, toi < n
-
所有点对 (fromi, toi) 互不相同。