QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#94478 | #4357. School Road | tricyzhkx | 0 | 93ms | 24924kb | C++14 | 2.3kb | 2023-04-06 13:00:13 | 2023-04-06 13:00:16 |
Judging History
answer
# include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=1e18;
int n,cnt,dfn[100010],low[100010],ffa[100010],tot;
ll dis1[100010],dis2[100010];
bool vis[100010],good[100010];
stack<int> stk;
queue<int> que;
vector<pair<int,int>> G[100010];
map<int,bool> g[100010];
struct node
{
int v;ll w;
node(int _v=0,ll _w=0):v(_v),w(_w){}
bool operator<(const node &a)const{return w>a.w;}
};
void Dij(int s,ll *dis)
{
priority_queue<node> que;
fill(dis+1,dis+n+1,INF);
memset(vis+1,0,sizeof(bool)*n);
dis[s]=0;que.emplace(s,0);
while(!que.empty())
{
node t=que.top();que.pop();
if(vis[t.v]) continue;
int u=t.v;vis[u]=1;
for(auto p:G[u])
{
int v=p.first,w=p.second;
if(dis[v]>dis[u]+w) dis[v]=dis[u]+w,que.emplace(v,dis[v]);
}
}
}
void tarjan(int u,int fa)
{
dfn[u]=low[u]=++tot;
stk.push(u);
for(auto p:G[u])
{
int v=p.first;
if(!dfn[v])
{
tarjan(v,u);low[u]=min(low[u],low[v]);
if(low[v]>=dfn[u])
{
int w;cnt++;
do
{
w=stk.top();stk.pop();
ffa[w]=cnt;
}while(w!=v);
ffa[cnt]=u;
}
}
else if(v!=fa) low[u]=min(low[u],dfn[v]);
}
}
void add(int u,int v){g[u][v]=g[v][u]=1;}
void push(int u){if(u!=1 && u!=n && g[u].size()<=2) que.push(u);}
int main()
{
int m,u,v,w;
cin>>n>>m;cnt=n;
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&w);
G[u].emplace_back(v,w);G[v].emplace_back(u,w);
}
Dij(1,dis1);Dij(n,dis2);
G[1].emplace_back(n,dis1[n]);
G[n].emplace_back(1,dis1[n]);
tarjan(1,0);good[1]=1;
for(int i=2;i<=n;i++)
if(ffa[i]==ffa[n]) good[i]=1;
for(int u=1;u<=n;u++)if(good[u])
for(auto p:G[u])
{
int v=p.first,w=p.second;
if(!good[v] || dis1[v]+w+dis2[u]==dis1[n]) continue;
if(dis1[u]+w+dis2[v]!=dis1[n]) return puts("1"),0;
}
for(int u=1;u<=n;u++)if(good[u])
for(auto p:G[u])
{
int v=p.first,w=p.second;
if(good[v] && dis1[u]+w+dis2[v]==dis1[n]) add(u,v);
}
for(int i=2;i<n;i++) push(i);
while(!que.empty())
{
int u=que.front();que.pop();
if(!g[u].size()) continue;
assert(g[u].size()==2);
vector<int> vec;
for(auto p:g[u]) g[p.first].erase(u),vec.push_back(p.first);
add(vec[0],vec[1]);
push(vec[0]);push(vec[1]);
}
return puts(g[1].size()==1 && g[1][n]?"0":"1"),0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 7
Accepted
time: 1ms
memory: 10600kb
input:
14 40 8 12 570429827 6 10 592780730 13 14 299807355 4 10 729771483 4 10 729771483 6 9 746405411 2 3 696576351 12 14 192640790 4 13 284900209 1 2 857968292 12 14 192640790 8 12 570429827 6 10 592780730 6 9 746405411 9 11 329648726 4 13 284900209 2 3 696576351 4 10 729771483 5 11 101819611 3 7 1824073...
output:
0
result:
ok single line: '0'
Test #2:
score: -7
Wrong Answer
time: 4ms
memory: 10696kb
input:
41 40 12 19 102666211 30 32 10931929 8 34 88862177 11 29 37284876 6 35 24117284 6 11 24483138 10 35 11019124 4 22 509961847 20 39 77098829 25 33 563195350 22 24 781289886 2 17 238185039 21 27 288940653 3 31 62767763 18 21 350694322 2 40 228181439 3 33 109276182 31 36 203571934 28 34 64098677 14 24 3...
output:
1
result:
wrong answer 1st lines differ - expected: '0', found: '1'
Subtask #2:
score: 0
Wrong Answer
Test #11:
score: 15
Accepted
time: 3ms
memory: 10636kb
input:
18 40 3 10 26965732 5 15 67047331 3 17 42474964 13 15 129212204 9 18 142540287 2 14 27157962 5 15 67047331 5 15 67047331 5 15 67047331 4 16 212978971 6 12 51548223 4 18 192438222 13 16 60052417 16 17 162364835 6 17 55527270 9 11 58810843 3 7 95393586 13 15 129212204 2 17 67824762 5 15 67047331 15 16...
output:
0
result:
ok single line: '0'
Test #12:
score: -15
Wrong Answer
time: 7ms
memory: 10584kb
input:
18 51 5 16 489370441 7 8 674383722 8 11 602435525 1 10 856666364 13 18 650829027 11 14 198398173 3 4 613940394 15 17 123758204 8 11 602435525 3 6 567757815 13 18 650829027 14 15 236674174 3 4 613940394 5 18 956980171 6 16 887883755 3 6 567757815 6 16 887883755 5 18 956980171 4 10 339471731 11 14 198...
output:
1
result:
wrong answer 1st lines differ - expected: '0', found: '1'
Subtask #3:
score: 0
Wrong Answer
Test #18:
score: 0
Wrong Answer
time: 93ms
memory: 24924kb
input:
100000 99999 42115 93495 19881095 21969 68351 161710 7405 86343 27129 37307 45676 320013 30388 71545 117761 22026 68957 65332 77949 81644 2281387 24865 95079 341488 9849 98496 2548159 53911 79572 4962105 24880 62622 1678564 15943 22168 1524688 67424 78323 2450655 32175 74893 1908332 35640 39305 1043...
output:
1
result:
wrong answer 1st lines differ - expected: '0', found: '1'
Subtask #4:
score: 0
Dangerous Syscalls
Test #57:
score: 35
Accepted
time: 0ms
memory: 10692kb
input:
18 400 11 18 145314505 1 18 242896789 1 18 242896789 5 13 31030812 13 18 93451080 1 18 242896789 1 7 123378068 1 18 242896789 1 18 242896789 1 18 242896789 1 18 242896789 1 18 242896789 1 18 242896789 1 3 42183985 1 18 242896789 13 18 93451080 1 18 242896789 13 18 93451080 1 18 242896789 1 18 242896...
output:
0
result:
ok single line: '0'
Test #58:
score: 0
Accepted
time: 43ms
memory: 13848kb
input:
18 200000 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 758096510 1 18 ...
output:
0
result:
ok single line: '0'
Test #59:
score: 0
Accepted
time: 37ms
memory: 14552kb
input:
18 200000 1 16 142470606 1 16 142470606 1 16 142470606 1 16 142470606 1 18 403405575 1 18 403405575 1 18 403405575 1 18 403405575 1 18 403405575 1 16 142470606 1 16 142470606 1 18 403405575 1 18 403405575 1 18 403405575 1 18 403405575 1 18 403405575 1 16 142470606 1 18 403405575 1 16 142470606 16 18...
output:
1
result:
ok single line: '1'
Test #60:
score: 0
Accepted
time: 47ms
memory: 14316kb
input:
18 200000 4 9 299686894 3 5 299686894 7 8 299686894 1 16 299686894 3 17 299686894 6 9 299686894 12 15 299686894 4 14 299686894 2 5 299686894 15 16 299686894 4 9 299686894 5 17 299686894 3 5 299686894 1 12 299686894 9 13 299686894 6 16 299686894 3 4 299686894 12 17 299686894 6 11 299686894 6 16 29968...
output:
1
result:
ok single line: '1'
Test #61:
score: 0
Accepted
time: 72ms
memory: 24916kb
input:
100000 100013 58740 94702 183108 37735 80452 620754 37294 78858 10966952 37514 85983 339130 12698 97268 45544120 69733 89994 8521209 75252 91512 12575878 277 80124 76073 17061 55209 7457230 36796 62730 7849522 45347 80689 1830312 35585 68837 368255 36459 46047 4254924 70264 73565 812524 37921 93786 ...
output:
1
result:
ok single line: '1'
Test #62:
score: -35
Dangerous Syscalls
input:
100000 200000 6389 94276 543986 25881 32460 603154 20645 64539 4139 27806 62727 1392853 14364 61295 175740 65909 76384 35860 40746 88474 348638 35372 49809 127422 43618 50453 115413 28758 97249 167174 49253 61224 39406485 3792 20026 6179775 50603 93717 112986 34416 93394 447809 28574 46252 400986 13...
output:
result:
Subtask #5:
score: 0
Skipped
Dependency #1:
0%