HDOJ  1874   畅通工程续
2015-12-18 18:08
323 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874
开始学习最短路,感觉Dijkstra算法还挺好用的......
#include <stdio.h>
#define INF 10000000
#define MAXN 250
int n,m,beg,end;
int Edge[MAXN][MAXN];
int s[MAXN],dist[MAXN];
void Dijkstra(int v0)
{
int
i,j,k;
for(i=0;i<n;i++)
{
dist[i]=Edge[v0][i];
s[i]=0;
}
s[v0]=1;
dist[v0]=0;
for(i=0;i<n-1;i++)
{
int min=INF,u=v0;
for(j=0;j<n;j++)
{
if(!s[j]&&dist[j]<min)
{
u=j;
min=dist[j];
}
}
s[u]=1;
for(k=0;k<n;k++)
{
if(!s[k]&&Edge[u][k]<INF&&dist[u]+Edge[u][k]<dist[k])
{
dist[k]=dist[u]+Edge[u][k];
}
}
}
}
int main()
{
int
i,j;
int
u,v,w;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i==j)
Edge[i][j]=0;
else
Edge[i][j]=INF;
}
}
for(i=0;i<m;i++)
{
scanf("%d%d%d",&u,&v,&w);
if(w<Edge[u][v])
{
Edge[u][v]=w;
Edge[v][u]=w;
}
}
scanf("%d%d",&beg,&end);
Dijkstra(beg);
printf("%d\n",dist[end]!=INF?dist[end]:-1);
}
return
0;
}
开始学习最短路,感觉Dijkstra算法还挺好用的......
#include <stdio.h>
#define INF 10000000
#define MAXN 250
int n,m,beg,end;
int Edge[MAXN][MAXN];
int s[MAXN],dist[MAXN];
void Dijkstra(int v0)
{
int
i,j,k;
for(i=0;i<n;i++)
{
dist[i]=Edge[v0][i];
s[i]=0;
}
s[v0]=1;
dist[v0]=0;
for(i=0;i<n-1;i++)
{
int min=INF,u=v0;
for(j=0;j<n;j++)
{
if(!s[j]&&dist[j]<min)
{
u=j;
min=dist[j];
}
}
s[u]=1;
for(k=0;k<n;k++)
{
if(!s[k]&&Edge[u][k]<INF&&dist[u]+Edge[u][k]<dist[k])
{
dist[k]=dist[u]+Edge[u][k];
}
}
}
}
int main()
{
int
i,j;
int
u,v,w;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i==j)
Edge[i][j]=0;
else
Edge[i][j]=INF;
}
}
for(i=0;i<m;i++)
{
scanf("%d%d%d",&u,&v,&w);
if(w<Edge[u][v])
{
Edge[u][v]=w;
Edge[v][u]=w;
}
}
scanf("%d%d",&beg,&end);
Dijkstra(beg);
printf("%d\n",dist[end]!=INF?dist[end]:-1);
}
return
0;
}
相关文章推荐
- HDOJ&nbsp;&nbsp;1862&nbsp;&nbsp;&nbsp;EXCEL排序
- HDOJ&nbsp;&nbsp;1859&nbsp;&nbsp;&nbsp;最小长方形
- HDOJ&nbsp;&nbsp;1233&nbsp;&nbsp;&nbsp;还是畅通工程
- HDOJ&nbsp;&nbsp;1232&nbsp;&nbsp;&nbsp;&nbsp;畅通工程
- HDOJ&nbsp;&nbsp;1022&nbsp;&nbsp;&nbsp;Train&nbsp;Problem&nbsp;I
- HDOJ&nbsp;1015&nbsp;&nbsp;&nbsp;Safecracker
- HDOJ&nbsp;&nbsp;1039&nbsp;&nbsp;&nbsp;Easier&nbsp;Done&nbsp;Than&nbsp;Sa…
- HDOJ&nbsp;&nbsp;1020&nbsp;&nbsp;&nbsp;Encoding
- HDOJ&nbsp;&nbsp;1061&nbsp;&nbsp;Rightmost&nbsp;Digit
- HDOJ&nbsp;&nbsp;2069&nbsp;&nbsp;&nbsp;&nbsp;Coin&nbsp;Change
- HDOJ&nbsp;&nbsp;2700&nbsp;&nbsp;&nbsp;Parity
- HDOJ&nbsp;&nbsp;&nbsp;2568&nbsp;&nbsp;&nbsp;前进
- HDOJ&nbsp;&nbsp;2567&nbsp;&nbsp;&nbsp;寻梦
- HDOJ&nbsp;&nbsp;2562&nbsp;&nbsp;&nbsp;奇偶位互换
- HDOJ&nbsp;&nbsp;&nbsp;2561&nbsp;&nbsp;&nbsp;第二小整数
- HDOJ&nbsp;&nbsp;&nbsp;2551&nbsp;&nbsp;&nbsp;竹青遍野
- HDOJ&nbsp;&nbsp;2550&nbsp;&nbsp;&nbsp;百步穿杨
- HDOJ&nbsp;&nbsp;2549&nbsp;&nbsp;&nbsp;&nbsp;壮志难酬
- 安装时防火墙未关闭报错
- 数据分析师考试和scanf读取数据的问题