QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#94478#4357. School Roadtricyzhkx0 93ms24924kbC++142.3kb2023-04-06 13:00:132023-04-06 13:00:16

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-04-06 13:00:16]
  • 评测
  • 测评结果:0
  • 用时:93ms
  • 内存:24924kb
  • [2023-04-06 13:00:13]
  • 提交

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;
}

詳細信息

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%