QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#721962 | #9431. The Quest for El Dorado | Alasco# | WA | 76ms | 36544kb | C++14 | 2.0kb | 2024-11-07 17:18:20 | 2024-11-07 17:18:21 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const ll inf=1e17;
int n,m,k,vis[500005];
struct dd{
int to,f;
ll dis;
};
struct rd{
int f;
ll dis;
}a[500005];
struct node{
int id,f;
ll dis;
bool operator<(const node y)const{
if(f!=y.f)return f>y.f;
return dis>y.dis;
}
}dist[500005];
vector<dd>e[500005];
vector<int>ind[500005];
void __(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
e[i].clear();
ind[i].clear();
dist[i]={0,m+1,inf};
vis[i]=0;
}
for(int i=1;i<=m;i++){
int u,v,c;
ll l;
cin>>u>>v>>c>>l;
e[u].push_back({v,c,l});
e[v].push_back({u,c,l});
}
for(int i=1;i<=k;i++){
cin>>a[i].f>>a[i].dis;
ind[a[i].f].push_back(i);
}
priority_queue<node>q;
dist[1]={1,0,0};
q.push(dist[1]);
while(!q.empty()){
int u=q.top().id,f=q.top().f,dis=q.top().dis;
q.pop();
if(vis[u])continue;
vis[u]=1;
// cout<<"U"<<u<<"\n";
for(auto [v,ff,len]:e[u]){
if(ff==a[f].f){
// cout<<"A\n";
if(dis+len>a[f].dis)continue;
node tmp=node{v,f,len+dis};
if(dist[v]<tmp){
dist[v]=tmp;
q.push(dist[v]);
}
continue;
}
// cout<<"B "<<v<<" "<<ff<<" "<<len<<"\n";
auto it=lower_bound(ind[ff].begin(),ind[ff].end(),f);
if(it==ind[ff].end())continue;
int nex=(*it);
node tmp=node{v,nex,len};
// cout<<"C"<<v<<" "<<nex<<" "<<len<<"\n";
if(dist[v]<tmp){
dist[v]=tmp;
q.push(dist[v]);
}
}
}
for(int i=1;i<=n;i++){
cout<<vis[i];
}
cout<<"\n";
}
int main(){
ios::sync_with_stdio(false),cin.tie(nullptr);
int _;cin>>_;while(_--)__();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 8ms
memory: 32436kb
input:
2 5 6 4 1 2 1 30 2 3 1 50 2 5 5 50 3 4 6 10 2 4 5 30 2 5 1 40 1 70 6 100 5 40 1 30 3 1 1 2 3 1 10 1 100
output:
11011 100
result:
ok 2 lines
Test #2:
score: -100
Wrong Answer
time: 76ms
memory: 36544kb
input:
1110 46 80 30 44 23 5 46 10 28 1 64 32 34 3 40 9 36 1 26 15 14 5 95 38 19 2 34 2 17 4 183 10 38 2 81 5 15 2 83 31 38 3 100 40 30 1 53 41 10 1 193 29 20 5 18 14 41 3 78 8 16 5 74 46 13 3 78 44 28 3 45 1 40 3 133 5 32 1 108 22 26 2 83 10 38 1 77 11 40 1 11 17 21 2 66 41 46 3 98 9 36 2 25 40 18 1 19 27...
output:
1110110111110111111110111000111100111101101000 1000000010101001011011000000001000000100000000 1000000000000000000000000000000000000000000000 1000000000000000000000000010000000000000000000 1111111111111111111111111111111111111111111111 1001100010100000000101110000100001000100110 101011101000000000100...
result:
wrong answer 1st lines differ - expected: '1000110011110111110010100001010100100101000000', found: '1110110111110111111110111000111100111101101000'