Submission #1290352

#TimeUsernameProblemLanguageResultExecution timeMemory
1290352SSKMFRestore Array (RMI19_restore)C++20
100 / 100
334 ms936 KiB
#include <bits/stdc++.h>
using namespace std;

vector < pair <int , int> > adiacenta[5001];
int limita[5001];

int main ()
{
    ios :: sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    
    int numar_noduri , numar_restrictii;
    cin >> numar_noduri >> numar_restrictii;

    for (int indice = 0 ; indice < numar_noduri ; indice++)
    {
        adiacenta[indice].emplace_back(indice + 1 , 1);
        adiacenta[indice + 1].emplace_back(indice , 0);
    }

    while (numar_restrictii--)
    {
        int stanga , dreapta , factor , valoare;
        cin >> stanga >> dreapta >> factor >> valoare;

        dreapta++;
        if (valoare == 1)
            { adiacenta[stanga].emplace_back(dreapta , factor - 1); }
        else
            { adiacenta[dreapta].emplace_back(stanga , -factor); }
    }

    for (int indice = 0 ; indice <= numar_noduri ; indice++)
        { limita[indice] = 1000000000; }

    limita[0] = 0;
    for (int repetare = 0 ; repetare <= numar_noduri ; repetare++)
    {
        bool gasit = false;
        for (int nod = 0 ; nod <= numar_noduri ; nod++) {
            for (auto& vecin : adiacenta[nod]) {
                if (limita[vecin.first] > limita[nod] + vecin.second)
                {
                    limita[vecin.first] = limita[nod] + vecin.second;
                    gasit = true;
                }
            }
        }

        if (repetare == numar_noduri && gasit)
            { cout << "-1"; return 0; }

        if (!gasit)
            { break; }
    }

    for (int indice = 0 ; indice < numar_noduri ; indice++)
        { cout << (limita[indice] == limita[indice + 1] ? "1 " : "0 "); }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...