#include<bits/stdc++.h>
#define tpp tuple<int,int,int,int>
#define ll long long
using namespace std;
const ll MOD=1e9+7;
const int N=5e5+10;
int d[N];
//d[i] keeps number 0 from 1 to i
//cal(l,r) is d[r+1]-d[l]
vector<tuple<int,int,int>> edge;
void solve(){
int n,m;
cin>>n >>m;
for(int i=0;i<m;i++){
int l,r,w,t;
cin>>l >>r >>w >>t;
if(t==0) edge.push_back({r+1,l,-w});
else edge.push_back({l,r+1,w-1});
}
for(int i=0;i<n;i++) edge.push_back({i,i+1,1}),edge.push_back({i+1,i,0});
d[0]=0;
for(int i=1;i<=n;i++) d[i]=INT_MAX;
bool st;
//n+1 node
for(int i=0;i<n+1;i++){
st=0;
for(auto [u,v,w]:edge){
if(d[u]==INT_MAX) continue;
if(d[u]+w<d[v]){
d[v]=d[u]+w;
st=1;
}
}
}
// for(int i=0;i<=n;i++) cout<<d[i] <<" ";
// cout<<"\n";
if(st==1){
cout<<-1;
return;
}
for(int i=0;i<n;i++){
if(d[i+1]-d[i]==1) cout<<0 <<" ";
else cout<<1 <<" ";
}
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int t=1;
//cin>>t;
while(t--){
solve();
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |