Pagini recente » Cod sursa (job #2930542) | Cod sursa (job #699837) | Cod sursa (job #3228875) | Cod sursa (job #1791934) | Cod sursa (job #959585)
Cod sursa(job #959585)
#include <cstdio>
#include <vector>
using namespace std;
#define maxn 100010
int n, m, nod, mc, st0, f[maxn], st[maxn];
double xx, yy;
int a[maxn], b[maxn], o[maxn], pz[maxn];
vector<int> v[maxn];
int main()
{
freopen("nowhere-zero.in", "r", stdin);
freopen("nowhere-zero.out", "w", stdout);
scanf("%d%d", &n, &m);
for(int i=1; i<=n; ++i)
scanf("%lf%lf", &xx, &yy);
for(int i=1; i<=m; ++i)
{
scanf("%d%d", &a[i], &b[i]);
v[a[i]].push_back(i);
v[b[i]].push_back(i);
}
for(int i=1; i<=n; ++i)
if(pz[i]!=v[i].size())
{
st[++st0]=i;
while(st0>0 &&st0<100)
{
nod=st[st0];
if(pz[nod]==v[nod].size())
{
--st0;
continue;
}
while(f[v[nod][pz[nod]]]==1)
{
++pz[nod];
if(pz[nod]==v[nod].size())
break;
}
if(pz[nod]==v[nod].size())
{
--st0;
continue;
}
mc=v[nod][pz[nod]];
f[mc]=1;
if(nod==a[mc])
st[++st0]=b[mc];
else
{
st[++st0]=a[mc];
o[mc]=1;
}
}
}
for(int i=1; i<=m; ++i)
if(o[i]==0)
printf("%d %d 1\n", a[i], b[i]);
else
printf("%d %d 1\n", b[i], a[i]);
return 0;
}