TOJ 2870 The K-th City 解题

最小路径问题。
求完以后排序就可以了。
这题wa了一次。因为最近写了好多有向图的然后这个在读入数据的时候忘记考虑这个是一个无向图了。
 1#include<stdio.h>
 2#include<string.h>
 3int data[300][300],aa,bb,cc,a[300],b[300],n,m,i,j,k,t;
 4int main()
 5{
 6    while(1)
 7    {
 8    scanf("%d",&n);
 9    if(n==0)break;
10    scanf("%d",&m);
11    memset(data,3,sizeof(data));
12    for(i=0;i<m;i++)
13    {
14        scanf("%d%d%d",&aa,&bb,&cc);
15        data[aa][bb]=cc;
16        data[bb][aa]=cc;
17    }

18    for(i=0;i<n;i++)data[i][i]=0;
19    for(k=0;k<n;k++)
20        for(i=0;i<n;i++)
21            for(j=0;j<n;j++)
22                if(data[i][k]+data[k][j]<data[i][j])
23                    data[i][j]=data[i][k]+data[k][j];
24    for(i=0;i<n;i++)a[i]=data[0][i];
25    for(i=0;i<n;i++)b[i]=i;
26    for(i=0;i<n;i++)
27        for(j=0;j<n-1;j++)
28            if((a[j]>a[j+1]) || ((a[j]==a[j+1])&& b[j]>b[j+1]))
29            {
30                t=a[j];
31                a[j]=a[j+1];
32                a[j+1]=t;
33                t=b[j];
34                b[j]=b[j+1];
35                b[j+1]=t;
36            }

37
38    scanf("%d",&k);
39    printf("%d\n",b[k]);
40    }

41    return 0;
42}

43

posted on 2008-07-15 19:35 gong 阅读(490) 评论(2)  编辑 收藏 引用

评论

# re: TOJ 2870 The K-th City 解题 2010-09-01 22:34 HereIcan

aaa  回复  更多评论   

# re: TOJ 2870 The K-th City 解题 2010-09-01 22:39 HereIcan

哥们儿,我才识学浅,不是太理解,你这是dijkstra算法吗? 还是动态规划之类的?  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年9月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

导航

统计

常用链接

留言簿(6)

随笔档案

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜