Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- map <string, int> amigos;
- vector <int> grafo[40];
- int grau[50],teste=0;
- string amg,amigoInicio;
- vector <int> lista;
- int main()
- {
- int num_amg,x=0,n;
- while (1)
- {
- amigos.clear();
- lista.clear();
- for (int i=0;i<50;i++)grau[i]=0;
- for (int i=0;i<40;i++)grafo[i].clear();
- teste++;
- cin >> num_amg;
- if (!num_amg)break;
- for (int i=0; i<num_amg; i++)
- {
- x++;
- cin >> amg;
- amigos[amg]=x;
- }
- for (int i=0; i<num_amg; i++)
- {
- cin >> amigoInicio;
- cin >> n;
- for (int i=0; i<n; i++)
- {
- cin >> amg;
- grafo[amigos[amg]].push_back(amigos[amigoInicio]);
- }
- grau[amigos[amigoInicio]]=n;
- }
- for (int i=1;i<=num_amg;i++)
- {
- if (!grau[i])
- lista.push_back(i);
- }
- int ini=0;
- while (ini < (int) lista.size())
- {
- int atual=lista[ini];
- ini++;
- for (int i=0;i<grafo[atual].size();i++)
- {
- int v=grafo[atual][i];
- grau[v]--;
- if (!grau[v]) lista.push_back(v);
- }
- }
- printf("Teste %d\n",teste);
- if (lista.size()!=num_amg)
- {
- printf("impossivel");
- printf("ok");
- }
- else
- for (int i=0;i<lista.size();i++)
- {
- map <string,int> :: iterator it;
- for (it=amigos.begin();it!=amigos.end();it++)
- {
- if ((*it).second==lista[i])
- cout << (*it).first << " " ;
- }
- }
- printf("\n\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement