Submission #480346

#TimeUsernameProblemLanguageResultExecution timeMemory
480346nicolaalexandraRestore Array (RMI19_restore)C++14
100 / 100
89 ms1092 KiB
#include <bits/stdc++.h> #define DIM 10010 #define INF 2000000000 using namespace std; vector <pair<int,int> > L[DIM]; deque <int> c; int viz[DIM],sp[DIM],w[DIM]; int n,m,i,j,x,y,k,val; void add_edge (int x, int y, int cost){ L[x].push_back(make_pair(y,cost)); //cout<<x<<" "<<y<<" "<<cost<<"\n"; } int main (){ //ifstream cin ("date.in"); //ofstream cout ("date.out"); cin>>n>>m; for (i=1;i<=m;i++){ cin>>x>>y>>k>>val; x++, y++; if (val) add_edge(x-1,y,k-1); else add_edge(y,x-1,-k); } for (i=1;i<=n;i++){ add_edge(i-1,i,1); add_edge(i,i-1,0); sp[i] = INF; } c.push_back(0); viz[0] = 1; sp[0] = 1; while (!c.empty()){ int nod = c.front(); c.pop_front(); viz[nod] = 0; for (auto it : L[nod]){ int vecin = it.first, cost = it.second; if (sp[nod] + cost < sp[vecin]){ sp[vecin] = sp[nod] + cost; if (sp[vecin] < 0){ cout<<"-1"; return 0; } if (!viz[vecin]){ viz[vecin] = 1; c.push_back(vecin); w[vecin]++; if (w[vecin] > n){ cout<<"-1"; return 0; }}}}} for (i=1;i<=n;i++){ if (sp[i] == sp[i-1]) cout<<"1 "; else cout<<"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...