Advertisement
Saleh127

UVA 11504(using priority queue)

Mar 11th, 2021
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define test int t; cin>>t; for(int cs=1;cs<=t;cs++)
  5. bool v[100005];
  6. vector<ll>g[100005];
  7. map<ll,ll>ss;
  8.  
  9. void dfs(ll in)
  10. {
  11. if(v[in]) return;
  12. v[in]=1;
  13. for(ll i=0;i<g[in].size();i++)
  14. {
  15. if(v[g[in][i]]==0)
  16. {
  17. dfs(g[in][i]);
  18. }
  19. }
  20. topsort.push_back(in);
  21. }
  22.  
  23. int main()
  24. {
  25. ios_base::sync_with_stdio(0);
  26. cin.tie(0);cout.tie(0);
  27.  
  28. test
  29. {
  30.  
  31. ll n,m,i,j,k,l=0;
  32. cin>>n>>m;
  33.  
  34.  
  35. for(i=0;i<n+5;i++)
  36. {
  37. g[i].clear();
  38. v[i]=0;
  39. }
  40.  
  41. ss.clear();
  42.  
  43. for(i=0;i<m;i++)
  44. {
  45. ll a,b;
  46. cin>>a>>b;
  47. g[a].push_back(b);
  48. ss[b]++;
  49. }
  50.  
  51. priority_queue<pair<ll,ll>>q;
  52.  
  53. for(i=1;i<=n;i++)
  54. {
  55. q.push({-ss[i],i});
  56. }
  57.  
  58.  
  59.  
  60. while(!q.empty())
  61. {
  62. if(v[q.top().second]==0)
  63. {
  64. l++;
  65. dfs(q.top().second);
  66. }
  67. q.pop();
  68. }
  69.  
  70. cout<<l<<endl;
  71.  
  72. }
  73.  
  74.  
  75. return 0;
  76. }
  77.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement