Aizu 0189 Convenient Location【floyd】

来源:互联网 发布:私人影院点播软件 编辑:程序博客网 时间:2024/05/01 09:51

原题网址:

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0189


题意:

一共有n个房间,给出某些房间之间的距离,问从哪个房间到所有其他的房间的距离和最小



题解:

最短路问题,而且需要求出所有的最短路,数据范围比较小,使用floyd 就够了......


语言不通最坑啊,还是看别人的题解才大概了解了题目数据的意思........


/*http://blog.csdn.net/liuke19950717*/#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int inf=0x3f3f3f3f;int graph[15][15];void floyd(int n){for(int i=0;i<n;++i){for(int j=0;j<n;++j){for(int k=0;k<n;++k){graph[j][k]=min(graph[j][k],graph[j][i]+graph[i][k]);}}}}void init(int n){for(int i=0;i<n;++i){for(int j=0;j<i;++j){graph[i][j]=graph[j][i]=inf;}graph[i][i]=0;}}int main(){int n;while(scanf("%d",&n),n){init(15);int m=0;for(int i=0;i<n;++i){int a,b,c;scanf("%d%d%d",&a,&b,&c);graph[a][b]=graph[b][a]=min(graph[a][b],c);m=max(max(m,a),b);}floyd(m+1);int ans=inf,kase=0;for(int i=0;i<=m;++i){int tp=0;for(int j=0;j<=m;++j){if(graph[i][j]!=inf){tp+=graph[i][j];}}if(tp<ans){ans=tp;kase=i;}}printf("%d %d\n",kase,ans);}return 0;} 


0 0
原创粉丝点击