Submission #1049325

#TimeUsernameProblemLanguageResultExecution timeMemory
1049325PlayVoltzRestore Array (RMI19_restore)C++17
100 / 100
130 ms1620 KiB
#include <cstdio>
#include <stdio.h>
#include <stdbool.h>
#include <iostream>
#include <map>
#include <vector>
#include <climits>
#include <stack>
#include <string>
#include <queue>
#include <algorithm>
#include <set>
#include <unordered_set>
#include <unordered_map>
#include <cmath>
#include <cctype>
#include <bitset>
#include <iomanip>
#include <cstring>
#include <numeric>
#include <cassert>
#include <random>
#include <fstream>
using namespace std;

#define int long long
#define pii pair<int, int>
#define mp make_pair
#define pb push_back
#define fi first
#define se second

struct trio{
	int a, b, c;
};

int32_t main(){
	int n, m, a, b, c, d;
	cin>>n>>m;
	vector<int> psum(n+1, LLONG_MAX/2);
  	psum[0]=0;
	vector<trio> vect;
	while (m--){
		cin>>a>>b>>c>>d;
		++a, ++b;
		if (d)vect.pb({a-1, b, c-1});
		else vect.pb({b, a-1, -c});
	}
	for (int i=1; i<=n; ++i)vect.pb({i-1, i, 1}), vect.pb({i, i-1, 0});
	for (int i=0; i<n; ++i)for (auto [b, a, c]:vect)psum[a]=min(psum[a], psum[b]+c);
	for (auto [b, a, c]:vect)if (psum[b]+c<psum[a]){cout<<-1;return 0;}
	for (int i=1; i<=n; ++i)cout<<!(psum[i]-psum[i-1])<<" ";
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...