Cod sursa(job #2759698)

Utilizator stefantagaTaga Stefan stefantaga Data 19 iunie 2021 22:48:34
Problema Reconst Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("reconst.in");
ofstream g("reconst.out");
int din[2005][2005],sol[2005],n,m,i,x,y,z,j;
vector <int> v[2005],v2[2005];
int main()
{
    f>>n>>m;
    for (i=1;i<=m;i++)
    {
        f>>x>>y>>z;
        din[x][y]=z;
        v[x].push_back(y);
    }
    for (i=1;i<=n;i++)
    {
        sort (v[i].begin(),v[i].end());
        for (j=1;j<v[i].size();j++)
        {
            int poz1=v[i][j-1],poz2=v[i][j];
            v[poz1+1].push_back(poz2);
            din[poz1+1][poz2]=din[i][poz2]-din[i][poz1];
        }
    }
    for (i=1;i<=n;i++)
    {
        for (j=0;j<v[i].size();j++)
        {
            v2[v[i][j]].push_back(i);
        }
    }
    for (i=n;i>=1;i--)
    {
        sort (v2[i].begin(),v2[i].end());
        for (j=(int)v2[i].size()-2;j>=0;j--)
        {
            int poz1=v2[i][j],poz2=v2[i][j+1];
            v2[poz1].push_back(poz2-1);
            din[poz1][poz2-1]=din[poz1][i]-din[poz2][i];
        }
    }
    for (i=1;i<=n;i++)
    {
        sol[i]=din[i][i];
        g<<sol[i]<<" ";
    }
    return 0;
}