Advertisement
gabrielcabezas

Untitled

Apr 14th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. map <string, int> amigos;
  4. vector <int> grafo[40];
  5. int grau[50],teste=0;
  6. string amg,amigoInicio;
  7. vector <int> lista;
  8. int main()
  9. {
  10. int num_amg,x=0,n;
  11. while (1)
  12. {
  13. amigos.clear();
  14. lista.clear();
  15. for (int i=0;i<50;i++)grau[i]=0;
  16. for (int i=0;i<40;i++)grafo[i].clear();
  17. teste++;
  18. cin >> num_amg;
  19. if (!num_amg)break;
  20. for (int i=0; i<num_amg; i++)
  21. {
  22. x++;
  23. cin >> amg;
  24. amigos[amg]=x;
  25. }
  26. for (int i=0; i<num_amg; i++)
  27. {
  28. cin >> amigoInicio;
  29. cin >> n;
  30. for (int i=0; i<n; i++)
  31. {
  32. cin >> amg;
  33. grafo[amigos[amg]].push_back(amigos[amigoInicio]);
  34.  
  35. }
  36. grau[amigos[amigoInicio]]=n;
  37. }
  38. for (int i=1;i<=num_amg;i++)
  39. {
  40. if (!grau[i])
  41. lista.push_back(i);
  42. }
  43. int ini=0;
  44. while (ini < (int) lista.size())
  45. {
  46.  
  47. int atual=lista[ini];
  48. ini++;
  49. for (int i=0;i<grafo[atual].size();i++)
  50. {
  51. int v=grafo[atual][i];
  52. grau[v]--;
  53. if (!grau[v]) lista.push_back(v);
  54. }
  55. }
  56. printf("Teste %d\n",teste);
  57. if (lista.size()!=num_amg)
  58. {
  59. printf("impossivel");
  60. printf("ok");
  61.  
  62. }
  63. else
  64. for (int i=0;i<lista.size();i++)
  65. {
  66. map <string,int> :: iterator it;
  67. for (it=amigos.begin();it!=amigos.end();it++)
  68. {
  69. if ((*it).second==lista[i])
  70. cout << (*it).first << " " ;
  71. }
  72. }
  73. printf("\n\n");
  74. }
  75.  
  76. return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement