http://acm.hdu.edu.cn/showproblem.php?pid=2112

本题题目意思非常简单,麻烦的就是处理一下字符串,这是我能力欠缺的地方

#include<stdio.h>
#include<iostream>
#include<string.h>
#define maxint 200000000
int map[][],visit[],n,m,s,e;
int
dis[];
char
name[][];
int
find(char str[])
{

    int
i;
    for
(i=;i<=m;i++)
    {

      if
(strcmp(name[i],str)==)
      return
i;
    }

   if
(m==||i>m)
    m++;
   strcpy(name[m],str);//从一开始进行存储
   return m;
}

void
dijksta(int s,int e)
{

    int
i,j,k,min;
    for
(i=;i<=m;i++)
   {

     dis[i]=map[s][i];
     visit[i]=i==s?:;//如果i==s,visit[i]=1;否则visit[i]=0;
   }
   for
(i=;i<=m-;i++)//m相当于顶点的个数
   {
       min=maxint;
      for
(j=;j<=m;j++)
       if
(visit[j]==&&dis[j]<min)
       {

            min=dis[j];
            k=j;
       }

      if
(min==maxint) break;
      visit[k]=;
    for
(j=;j<=m;j++)
      if
(visit[j]==&&map[k][j]+dis[k]<dis[j])//相连,没标记过,
     dis[j]=map[k][j]+dis[k];
}
}

void
init()
{

int
i,j,a,b,c;
char
s1[],s2[],start[],end[];
while
(scanf("%d",&n),n!=-)
{

  m=;
  for
(i=;i<=;i++)
   for
(j=;j<=;j++)
    map[i][j]=maxint;//初始化为无穷大
   scanf("%s %s",start,end);//出发地 ,目的地
   for(i=;i<=n;i++)
   {

    scanf("%s %s %d",s1,s2,&c);//公交的起点,终点及距离
    a=find(s1);
    b=find(s2);
    if
(map[a][b]>c)
     map[a][b]=map[b][a]=c;
   }

   s=find(start);
   e=find(end);
   if
(s==e)
    printf("0\n");
   else

   {

    dijksta(s,e);
    if
(dis[e]!=maxint)//是否为孤立点
     printf("%d\n",dis[e]);
    else

     printf("-1\n");
   }
}
}

int
main()
{

init();
return
;
}

先把我有乱有麻烦的错误代码贴上,哪天A了

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 1000001
int cmp(const void *a,const void *b)
{
return strcmp((char *)a,(char *)b);
}
int n;
char c[][],str[],str2[];
char a[][],b[][];
int bb[];
int map[][];
int v[],dis[];
int Q,E;
int ttt;
void D()
{
memset(v,,sizeof(v));
for(int i=;i<ttt;i++)
dis[i]=map[Q][i];
int i;
dis[Q]=;
v[Q]=;
int min;
int k;
for(i=;i<ttt;i++)
{
min=N;
for(int j=;j<ttt;j++)
{
if(v[j]==&&dis[j]<min)
{
min=dis[j];
k=j;
}
}
if(min==N) break;
v[k]=;
for(int j=;j<ttt;j++)
{
if(map[k][j]+dis[k]<dis[j]&&v[j]==)
dis[j]=map[k][j]+dis[k];
} }
if(dis[E]==N)
printf("-1\n");
else printf("%d\n",dis[E]);
}
int main()
{
int t;
int tt;
while(scanf("%d",&n)!=EOF&&n!=-)
{
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
map[i][j]=N;
map[j][i]=N;
}
map[i][i]=;
}
tt=;
scanf("%s%s",str,str2);
t=;
for(int i=;i<n;i++)
{
scanf("%s %s %d",a[t++],a[t++],&bb[i]);
strcpy(b[tt++],a[t-]);
strcpy(b[tt++],a[t-]);
}
qsort(b,tt,sizeof(b[]),cmp);
ttt=;
strcpy(c[ttt++],b[]);
for(int i=;i<tt;i++)
{
if(strcmp(b[i],b[i-])!=)
{
strcpy(c[ttt++],b[i]);
}
}
for(int i=;i<ttt;i++)
{
if(strcmp(str,c[i])==)
Q=i;
if(strcmp(str2,c[i])==)
E=i;
}
int i=;
int R,U;
int ee=;
for(i=;i<n;i++)
{
for(int j=;j<ttt;j++)
{
if(strcmp(c[j],a[ee])==)
R=j;
else if(strcmp(c[j],a[ee+])==)
U=j;
} if(map[R][U]>bb[i])
{
map[U][R]=bb[i];
map[R][U]=bb[i];
}
ee=ee+; }
D();
}
return ;
}

HDU Today(自己的代码不知道哪里错了一直没A抄袭大神的)的更多相关文章

  1. 对生成对抗网络GANs原理、实现过程、应用场景的理解(附代码),另附:深度学习大神文章列表

    https://blog.csdn.net/love666666shen/article/details/75522489 https://blog.csdn.net/yangdelong/artic ...

  2. 【IntellJ IDEA】idea上所有代码都报错了

    可能会碰到蓝屏,内存溢出重启idea等特殊情况. 重新打开idea后发现原本的代码全都报错了 正确的解决方法: 方法很简单 执行idea工具栏上下面的菜单: File -> Invalidate ...

  3. 为何你跟着滴滴D8级前端大神撸代码,技术却依旧原地踏步?

    引子 听说最近有很多小伙伴,热衷于在慕课网上学习各种前端实战教程,并以完成项目为奋斗目标.比如本文接下来要提到的<Vue2.0高级实战之开发移动端音乐App>,这门课程的传授者是来自滴滴D ...

  4. VsCode写Python代码!这代码简直和大神一样规范!太漂亮了!

    VsCode写Python代码!这代码简直和大神一样规范!太漂亮了!    转 https://www.jianshu.com/p/636306763d89 VsCode虽然没有Pycharm的功能齐 ...

  5. 解迷宫的C++的未完善编程代码........请大神们帮忙改善下.........

    这...................................................................... 我也是醉了 看不太懂,大神们求解............ ...

  6. hdu 5919 主席树(区间不同数的个数 + 区间第k大)

    Sequence II Time Limit: 9000/4500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  7. ruby大神与菜鸟的代码区别

    之前Brand类   has_and_belongs_to_many :categories, index: true 现在在Category类 增加 has_and_belongs_to_many ...

  8. 【python】抄写大神的糗事百科代码

    照着静觅大神的博客学习,原文在这:http://cuiqingcai.com/990.html 划重点: 1. str.strip() strip函数会把字符串的前后多余的空白字符去掉 2. resp ...

  9. 厉害了,Google大神每天写多少行代码?

    文章转自开源中国社区,编译自:Quora Quora上有个有趣的问题:Google工程师们每天写多少行代码? Google 的 AdMob 全栈工程师 Raymond Farias 在 Quora 发 ...

随机推荐

  1. linux批量修改文件名

    源文件; [root@test_machine fuzj]# ls fuzj-1.txt  fuzj-2.txt  fuzj-3.txt  fuzj-4.txt  fuzj-5.txt  fuzj-6 ...

  2. Ubuntu12.04 15.04禁止移动介质自动播放

    网上有有很多关于Ubuntu10.04关闭移动介质自动播放的方法,包括在文件管理器里面设置或者使用gconf-editor,但是从12.04开始这两种方法都不再好用了,关于移动介质的处理方法被移到了S ...

  3. [微信小程序]计算自己手机到指定位置的距离

    目的: 根据目的地的坐标计算自己手机的位置离目的地的距离的 核心思路: 后续操作必须等所有异步请求都返回了才能继续 使用 const qqmap = require("../../utils ...

  4. [sql异常]SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的

    //执行远程数据库表查询 SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=数据库地址;User ID=sa;password=sa' ).n ...

  5. 用图形数据库Neo4j 设计权限模块

    已经 SpringSecurity 在几个项目中 实现权限模块,对于数据库,也是思考了不少,从Mysql 到 mongodb 都不是特别满意, 在Mysql中,如果权限相对简单,那么还能接受,如果稍微 ...

  6. 【laravel5.6】laravel 自定义公共函数

    1.在 app/Helpers/ 新建一个文件 functions.php,当然这个文件位置和名称你可以自己定义,创建一些函数用于全局调用: 2.在composer.json中的autoload下增加 ...

  7. linux计划任务之crontab

    语法:        crontab [ -u user ] file        crontab [ -u user ] [ -i ] { -e | -l | -r } 说明: crontab命令 ...

  8. Delphi应用程序的调试(二)使用断点

    Delphi应用程序的调试(二)使用断点 使用断点(Using Breakpoints) 当用户从Delphi IDE 运行程序时,程序全速运行,只会在设置了断点的地方停住. New Term 断点( ...

  9. vue经验 - 那些自己给自己挖的深坑

    深坑场景:vue-异步请求数据,数据还没回来,页面却如饥似渴的准备好了的尴尬场景:问题原因和解决如下: 1.先说vuex中的store,一开始我为了偷懒是这么设置的,如下图: 然后我到了组件中直接这么 ...

  10. DragonBones龙骨换装(局部换装+全局换装)

    参考: Egret官方换装动画 Egret换装三种方式 CSDN(全局换装) egret使用DragonBones实现简单的换装 换装,主要是替换任意插槽的图片,来达到局部换装的目的. 游戏中可以只制 ...