Pagini recente » Cod sursa (job #2663952) | Cod sursa (job #1027210) | Cod sursa (job #96513) | Cod sursa (job #1424654) | Cod sursa (job #1222858)
#include<fstream>
#include<cstring>
using namespace std;
typedef struct celula {
int nod;
celula *next;
}*lista;
lista graf[20005],v;
int n,t,m,x,y,win[20005],nr[20005],urm[20005],k,i;
bool viz[20005];
void dfs(int nod) {
viz[nod]=1;
for (lista p=graf[nod]; p; p=p->next) {
if (viz[p->nod]==0) dfs(p->nod);
if (win[p->nod]==0) { win[nod]=1; urm[nod]=p->nod; }
}
}
int main(void) {
ifstream fin("pioni.in");
ofstream fout("pioni.out");
fin>>t>>n>>m;
for (i=1; i<=m; ++i) {
fin>>x>>y;
v=new celula; v->nod=y; v->next=graf[x]; graf[x]=v;
}
for (i=1; i<=n; ++i)
if (viz[i]==0) dfs(i);
for (; t>0; --t) {
fin>>k;
for (i=1; i<=k; ++i) {
fin>>x;
++nr[x];
}
bool ok=0;
int moves=0;
for (i=1; i<=n; ++i)
if (nr[i]>0&&win[i]){ ok=1; moves+=nr[i]; }
if (ok==0) fout<<"Fumeanu\n";
else {
fout<<"Nargy\n"<<moves<<" ";
for (i=1; i<=n; ++i)
if (win[i]) while ( nr[i]>0 ) { fout<<i<<" "<<urm[i]<<" "; --nr[i]; }
fout<<"\n";
}
memset(nr,0,sizeof(nr));
}
return 0;
}