1 条题解
-
1
先说明以下,这题是一本通里的。考虑到*ZH的懒惰值,数据只有一个还tm的是样例!
所以这里给一个网站,所有一本通的题目都可以在以下网站找到:题库和测试点
公用账号: 用户名:LZtool 密码:1234qwer
PS:这个网站的注册和提交都极度阴间,所以提供了一个
以下是我的代码,用结构体优化了链表
(虽然看上去更麻烦了),以下代码:#include <bits/stdc++.h> using namespace std; int head[200]; int d[200],v[200]; int m,n,t,ans=0; priority\_queue<pair<int ,int>>q; struct lll{int x,y,w,next;}line[10000]; void ppp(int i) { q.push(make\_pair(-d[i],i)); } void djs() { memset(d,0x3f,sizeof(d)); d[1]=0; ppp(1); while (!q.empty()){ int x=q.top().second;q.pop(); if(v[x])continue; v[x]=1; for(int i=head[x];i;i=line[i].next){ int y=line[i].y,w=line[i].w; if(d[y]>d[x]+w){ d[y]=d[x]+w; ppp(y); } } } } void add(int i,int x,int y,int w) { line[i].x=x; line[i].y=y; line[i].w=w; line[i].next=head[line[i].x]; head[line[i].x]=i; } int main() { cin>>n>>m; int x,y,z; for(int i=1;i<=m;i++){ cin>>x>>y>>z; add(i,x,y,z); add(i+m,y,x,z); } djs(); for(int i=1;i<=n;i++){ ans=max(ans,d[i]); } if(ans==0x3f3f3f3f){cout<<-1;return 0;} cout<<ans; return 0; }
- 1
信息
- ID
- 389
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 22
- 已通过
- 12
- 上传者