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

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

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

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

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

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

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

void
dijksta(int s,int e)
{

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

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

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

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

void
init()
{

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

  m=0;
  for
(i=1;i<=140;i++)
   for
(j=1;j<=140;j++)
    map[i][j]=maxint;//初始化为无穷大
   scanf("%s %s",start,end);//出发地 ,目的地
   for(i=1;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
0;
}

先把我有乱有麻烦的错误代码贴上,哪天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[202][31],str[31],str2[32];
char a[20013][31],b[20013][31];
int bb[10003];
int map[203][202];
int v[202],dis[202];
int Q,E;
int ttt;
void D()
{
    memset(v,0,sizeof(v));
    for(int i=0;i<ttt;i++)
        dis[i]=map[Q][i];
    int i;
    dis[Q]=0;
    v[Q]=1;
    int min;
    int k;
    for(i=1;i<ttt;i++)
    {
        min=N;
        for(int j=0;j<ttt;j++)
        {
            if(v[j]==0&&dis[j]<min)
            {
                min=dis[j];
                k=j;
            }
        }
        if(min==N) break;
        v[k]=1;
        for(int j=0;j<ttt;j++)
        {
            if(map[k][j]+dis[k]<dis[j]&&v[j]==0)
                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!=-1)
    {
        for(int i=0;i<=n;i++)
        {
            for(int j=0;j<=n;j++)
            {
                map[i][j]=N;
                map[j][i]=N;
            }
            map[i][i]=0;
        }
        tt=0;
        scanf("%s%s",str,str2);
        t=0;
        for(int i=0;i<n;i++)
        {
            scanf("%s %s %d",a[t++],a[t++],&bb[i]);
            strcpy(b[tt++],a[t-2]);
            strcpy(b[tt++],a[t-1]);
        }
        qsort(b,tt,sizeof(b[0]),cmp);
        ttt=0;
        strcpy(c[ttt++],b[0]);
        for(int i=1;i<tt;i++)
        {
            if(strcmp(b[i],b[i-1])!=0)
            {
               strcpy(c[ttt++],b[i]);
            }
        }
        for(int i=0;i<ttt;i++)
        {
            if(strcmp(str,c[i])==0)
                Q=i;
            if(strcmp(str2,c[i])==0)
                E=i;
        }
        int i=0;
        int R,U;
        int ee=0;
        for(i=0;i<n;i++)
        {
            for(int j=0;j<ttt;j++)
            {
                 if(strcmp(c[j],a[ee])==0)
                    R=j;
                  else if(strcmp(c[j],a[ee+1])==0)
                    U=j;
            }

              if(map[R][U]>bb[i])
              {
                  map[U][R]=bb[i];
                  map[R][U]=bb[i];
              }
              ee=ee+2;

        }
       D();
    }
    return 0;
}

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

时间: 2024-11-05 03:34:23

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

大神手把手教你写一个页面模板引擎,只需20行Javascript代码!

只用20行Javascript代码就写出一个页面模板引擎的大神是AbsurdJS的作者,下面是他分享的全文,转需. 不知道你有木有听说过一个基于Javascript的Web页面预处理器,叫做AbsurdJS.我是它的作者,目前我还在不断地完善它.最初我只是打算写一个CSS的预处理器,不过后来扩展到了CSS和HTML,可以用来把Javascript代码转成CSS和HTML代码.当然,由于可以生成HTML代码,你也可以把它当成一个模板引擎,用于在标记语言中填充数据. 于是我又想着能不能写一些简单的代

聊聊成为大神路上的过程(决定伟大水平和一般水平的关键因素,既不是天赋,也不是经验,而是[刻意练习]的程度,要多看别人的代码)

每个人都在成为大神的路上,只不过有的人在走,而有的人在跑. 写在前面的话 在开始正文之前我先跟大家分享一个我身边的例子.我有两个朋友,A和B.B从高一开始打dota,A从高二开始,到高中毕业的时候,A已经是一个 2100分的大神级别的人物,而B只有1200分而已.为什么A打的时间比B短,而水平却比B高呢?是天赋?是智商?似乎都不是. 我对两个人还是比较了解的,虽然同样是打dota,但是A和B之间有着很大差别的.A除了像B一样打dota之外,会看一些成名已久的大神的教学视 频,会看自己打dota的

hdu 1042 N!(大数阶乘,转化为100000这样的比较大的进制)

N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 54172    Accepted Submission(s): 15365 Problem Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in one

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

引子 听说最近有很多小伙伴,热衷于在慕课网上学习各种前端实战教程,并以完成项目为奋斗目标.比如本文接下来要提到的<Vue2.0高级实战之开发移动端音乐App>,这门课程的传授者是来自滴滴D8级的前端大神黄轶,当然也是我推崇的行业偶像之一. 在这里既然提到了Vue这门渐进式的前端框架,我就不得不感慨一下,最近两年,Vue.js在国内的发展可谓是如日中天,红透大江南北(当然功劳也少不了尤雨溪前段时间在上海,北京的演讲,为之宣传布道). 光我从掘金,简书,GitHub等平台上看到的相关文章或个人项目

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

照着静觅大神的博客学习,原文在这:http://cuiqingcai.com/990.html 划重点: 1. str.strip() strip函数会把字符串的前后多余的空白字符去掉 2. response.read().decode('utf-8','ignore')  要加'ignore'忽略非法字符,不然总是报解码错误 3. python 3.x 中  raw_input 改成 input 了 4. 代码最好用notepad++先写 格式清晰一点 容易发现错 尤其是缩进和中文标点的错误

hdu 1008为何不对?求大神指导!

/*#include<iostream> using namespace std; int main(){ int n; while (cin >> n){ if (n == 0) break; else if (n > 0 && n < 100){ int sum=0, max,min; int *f = new int[n]; for (int i = 0; i < n; i++) cin >> f[i]; max = min =

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

Sequence II Time Limit: 9000/4500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 849    Accepted Submission(s): 204 Problem Description Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2,?

无法运行的贪吃蛇游戏代码,求大神帮忙修改!

#include <iostream> #include <windows.h> #include <stdlib.h> #include <conio.h> #include <time.h> //使用当前时间做种子 enum dir {up,down,left,right}; //枚举类型enum dir //围墙 class Fence { public: void initFence(); void OutputF(); public:

屡败屡战,还是赢不了。求大神告诉我哪里错了

求大神告诉我哪里错了 奇偶数分离 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 有一个整型偶数n(2<= n <=10000),你要做的是:先把1到n中的所有奇数从小到大输出,再把所有的偶数从小到大输出. 输入 第一行有一个整数i(2<=i<30)表示有 i 组测试数据:每组有一个整型偶数n. 输出 第一行输出所有的奇数第二行输出所有的偶数 #include<stdio.h>#include<stdlib.h>int main