2023-07-13力扣今日三题

链接:

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) 互不相同。

猜你喜欢

转载自blog.csdn.net/Fei_WuYan/article/details/131713597