Pagini recente » Cod sursa (job #2263325) | Cod sursa (job #3220844) | Cod sursa (job #2856951) | Cod sursa (job #1018949) | Cod sursa (job #903943)
Cod sursa(job #903943)
#include<fstream>
#include<cmath>
#include<queue>
#define Mmax 100025
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int n,m,x,y,s,us;
struct seg
{
int x,y,c;
}a[Mmax],plec,sos;
queue<seg> Q;
void verif_cresc(seg b)
{
if(b.x>b.y)
{
int aux;
aux=b.x;
b.x=b.y;
b.y=aux;
}
}
void ordonare()
{
for(int i=1;i<m;i++)
for(int j=i+1;j<=m;j++)
if(a[i].x>a[j].x)
{
seg aux;
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
else
if(a[i].x==a[j].x)
if(a[i].y>a[j].y)
{
seg aux;
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
void formare()
{
for(int i=1;i<m;i++)
for(int j=i+1;j<=m && a[i].x==a[j].x;j++)
if(a[i].x==a[j].x)
{
m++;
a[m].x=a[i].y;
a[m].y=a[j].y;
a[m].c=abs(a[i].c-a[j].c);
verif_cresc(a[m]);
if(a[m].x==us)
{
us=a[m].y;
s+=a[m].c;
}
ordonare();
}
}
int main()
{
f>>n>>m>>x>>y;
for(int i=1;i<=m;i++)
{
f>>a[i].x>>a[i].y>>a[i].c;
verif_cresc(a[i]);
}
ordonare();
s+=a[1].c;
us=a[1].y;
formare();
g<<s<<" ";
return 0;
}