#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,u,v,w,s,t=0,tot=0,top=0;
int dfn[50001],low[50001],stack[50001],scc[50001];
int heap[50001],dijkstra[50001];
int head[50001],to[200001],data[200001],value[200001];
bool vis[50001];
void tarjan(int now){
int next;
dfn[now]=low[now]=++t;
stack[++top]=now;
vis[now]=true;
next=head[now];
while (next!=0){
if (dfn[data[next]]==0){
tarjan(data[next]);
low[now]=min(low[now],low[data[next]]);
}
else
if (vis[data[next]])
low[now]=min(low[now],dfn[data[next]]);
next=to[next];
}
if (dfn[now]==low[now]){
while (stack[top]!=now){
vis[stack[top]]=false;
scc[stack[top]]=now;
top--;
}
vis[stack[top]]=false;
scc[stack[top]]=now;
top--;
}
}
void adjust(int now){
int next=now,minNum=dijkstra[heap[now]];
if (now*2-1<=s && dijkstra[heap[now*2-1]]<minNum){
next=now*2-1;
minNum=dijkstra[heap[now*2-1]];
}
if (now*2<=s && dijkstra[heap[now*2]]<minNum){
next=now*2;
minNum=dijkstra[heap[now*2]];
}
if (now!=next){
heap[0]=heap[now];
heap[now]=heap[next];
heap[next]=heap[0];
adjust(next);
}
}
int main(){
freopen("regexp.in","r",stdin);
freopen("regexp.out","w",stdout);
int i,j,now,next;
bool judge;
scanf("%d%d",&n,&m);
for (i=1;i<=m;i++){
scanf("%d%d%d",&u,&v,&w);
judge=false;
next=head[u];
while (next!=0){
if (data[next]==v){
judge=true;
value[next]=min(value[next],w);
break;
}
next=to[next];
}
if (!judge){
tot++;
to[tot]=head[u];
data[tot]=v;
value[tot]=w;
head[u]=tot;
}
}
memset(vis,false,sizeof(vis));
for (i=1;i<=n;i++)
if (dfn[i]==0)
tarjan(i);
for (i=1;i<=n;i++)
heap[i]=i;
memset(dijkstra,63,sizeof(dijkstra));
dijkstra[1]=0;
s=n;
for (i=1;i<=n;i++){
now=heap[1];
heap[0]=heap[1];
heap[1]=heap[s];
heap[s]=heap[0];
s--;
next=head[now];
while (next!=0){
if (scc[now]==scc[data[next]])
value[next]=0;
dijkstra[data[next]]=min(dijkstra[data[next]],dijkstra[now]+value[next]);
next=to[next];
}
for (j=s/2;j>=1;j--)
adjust(j);
}
printf("%d\n",dijkstra[n]);
return 0;
}
正则表达式
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- title: "正则表达式学习笔记"author: "Dong Lei-ming"date: "2017年10月2...
- MDN 正则表达式是被用来匹配字符串中的字符组合的模式。在JavaScript中,正则表达式也是对象。这种模式可以...
- 常用参数: \d:匹配数字\w:匹配单词字符,字母、数字下划线\s:匹配空格[a-zA-Z0-9]:匹配a-z、A...