链接:
1557. 可以到达所有点的最少点数目
题意:
有向无环图,给出一个边数组
找出最小点集可以到达所有点
而且答案一定存在且唯一
解:
简单的思维题,就是找入度为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) 互不相同。