Pagini recente » Cod sursa (job #1646697) | Cod sursa (job #2812004) | Cod sursa (job #1914221) | Cod sursa (job #3030290) | Cod sursa (job #2128180)
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
ifstream fin("senat.in");
ofstream fout("senat.out");
int N,M,viz[105],sol[105],ct,viz2[105],nr,ok;
char s[1000];
bool V[105];
vector <int>v1[105];
bool Conect(int x)
{int i;
if(V[x])return 0;
else V[x]=1;
for(i=0;i<v1[x].size();i++)
if(viz[v1[x][i]]==0){viz[v1[x][i]]=x;viz2[x]=v1[x][i];return 1;}
for(i=0;i<v1[x].size();i++)
if(Conect(viz[v1[x][i]])==1){viz[v1[x][i]]=x;viz2[x]=v1[x][i];return 1;}
return 0;
}
int main()
{int i,x,j;
fin>>N>>M;
fin.getline(s,999);
for(i=1;i<=M;i++)
{fin.getline(s,999);
for(j=0;s[j]!=0;j++)
if(s[j]!=' ')nr=nr*10+s[j]-'0';
else {v1[i].push_back(nr);nr=0;}
v1[i].push_back(nr);nr=0;
/*for(j=0;j<v1[i].size();j++)
fout<<v1[i][j]<<" ";
fout<<"\n";
*/
}
while(ok==0){ok=1;
for(i=1;i<=M;i++)
V[i]=0;
for(i=1;i<=M;i++)
{if(viz2[i]==0&&Conect(i)==1){ct++;ok=1;}
}
}
if(ct<M)fout<<"0";
else
for(i=1;i<=M;i++)
fout<<viz2[i]<<"\n";
}