Pagini recente » Cod sursa (job #415567) | Cod sursa (job #1785878) | Cod sursa (job #1461134) | Cod sursa (job #307601) | Cod sursa (job #1149653)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("flori.in");
ofstream g("flori.out");
int n, m, i, j, v[1010][1010], x, d[1010], p;
vector<int> L[1010], a[1010];
inline int radacina(int x){
if(d[x]<0)
return x;
return d[x];
}
int main(){
freopen("flori.in", "r", stdin);
freopen("flori.out", "w", stdout);
scanf("%d %d", &n, &m);
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
{
scanf("%d", &x);
if(L[x].size()==0)
L[x].push_back(i);
else if(L[x].back()!=i)
L[x].push_back(i);
}
for(i=1; i<=n; i++)
d[i]=-1;
for(i=0; i<1001; i++)
{
if(L[i].size()>0)
{
p=radacina(L[i][0]);
for(j=1; j<L[i].size(); j++)
{
x=radacina(L[i][j]);
if(p!=x)
{
if(d[p]>d[x])
{
d[x]+=d[p];
d[p]=x;
p=x;
}
else
{
d[p]+=d[x];
d[x]=p;
}
}
}
}
}
for(i=1; i<=n; i++)
{
if(d[i]<0)
a[i].push_back(i);
else
a[ radacina(i) ].push_back(i);
}
for(i=1; i<=n; i++)
{
if(a[i].size()>0)
{
for(j=0; j<a[i].size(); j++)
g<<a[i][j]<<' ';
g<<"\n";
}
}
return 0;
}