标签:amp app 代码 cout 算法 color rail 模板题 and
Input
Output
Sample Input
5 5
1 2 20
2 3 30
3 4 20
4 5 20
1 5 100
Sample Output
90
Hint
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 1005;
const int MAX = 1000000;
int t,n;
int cost[N][N];
void init()
{
for (int i=1;i<=n;i++)
for (int j=i;j<=n;j++)
{
if (i==j)
cost[i][j]=cost[j][i]=0;
else
cost[i][j]=cost[j][i]=MAX;
}
}
void Dijkstra()
{
int mini,k;
int lowcost[N];
int fina[N];
for (int i=1;i<=n;i++)
{
lowcost[i]=cost[1][i];
fina[i]=0;
}
fina[1]=1;
for (int i=2;i<=n;i++)
{
mini=MAX;
k=0;
for (int j=1;j<=n;j++)
if (!fina[j]&&lowcost[j]<mini)
{
k=j;
mini=lowcost[j];
}
fina[k]=1;
for (int j=1;j<=n;j++)
if (!fina[j]&&mini+cost[k][j]<lowcost[j])
lowcost[j]=cost[k][j]+mini;
}
cout << lowcost[n] << endl;
}
int main()
{
int x,y,z;
while (cin>>t>>n)
{
init();
for (int i=1;i<=t;i++)
{
cin>>x>>y>>z;
if (cost[x][y]>z)
cost[x][y]=cost[y][x]=z;
}
Dijkstra();
}
return 0;
}
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 1005;
const int MAX = 1000000;
int t,n;
int cost[N][N];
void init()
{
for (int i=1;i<=n;i++)
for (int j=i;j<=n;j++)
{
if (i==j)
cost[i][j]=cost[j][i]=0;
else
cost[i][j]=cost[j][i]=MAX;
}
}
void Floyd()
{
for (int k=1;k<=n;k++)
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
cost[i][j]=min(cost[i][j],cost[i][k]+cost[k][j]);
int mini=0;
for (int i=2;i<=n;i++)
if (mini<cost[1][i])
mini=cost[1][i];
cout << mini << endl;
}
int main()
{
int x,y,z;
while (cin>>t>>n)
{
init();
for (int i=1;i<=t;i++)
{
cin>>x>>y>>z;
if (cost[x][y]>z)
cost[x][y]=cost[y][x]=z;
}
Floyd();
}
return 0;
}
标签:amp app 代码 cout 算法 color rail 模板题 and
原文地址:http://www.cnblogs.com/lisijie/p/7424927.html