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[][],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抄袭大神的)的更多相关文章
- 对生成对抗网络GANs原理、实现过程、应用场景的理解(附代码),另附:深度学习大神文章列表
https://blog.csdn.net/love666666shen/article/details/75522489 https://blog.csdn.net/yangdelong/artic ...
- 【IntellJ IDEA】idea上所有代码都报错了
可能会碰到蓝屏,内存溢出重启idea等特殊情况. 重新打开idea后发现原本的代码全都报错了 正确的解决方法: 方法很简单 执行idea工具栏上下面的菜单: File -> Invalidate ...
- 为何你跟着滴滴D8级前端大神撸代码,技术却依旧原地踏步?
引子 听说最近有很多小伙伴,热衷于在慕课网上学习各种前端实战教程,并以完成项目为奋斗目标.比如本文接下来要提到的<Vue2.0高级实战之开发移动端音乐App>,这门课程的传授者是来自滴滴D ...
- VsCode写Python代码!这代码简直和大神一样规范!太漂亮了!
VsCode写Python代码!这代码简直和大神一样规范!太漂亮了! 转 https://www.jianshu.com/p/636306763d89 VsCode虽然没有Pycharm的功能齐 ...
- 解迷宫的C++的未完善编程代码........请大神们帮忙改善下.........
这...................................................................... 我也是醉了 看不太懂,大神们求解............ ...
- hdu 5919 主席树(区间不同数的个数 + 区间第k大)
Sequence II Time Limit: 9000/4500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- ruby大神与菜鸟的代码区别
之前Brand类 has_and_belongs_to_many :categories, index: true 现在在Category类 增加 has_and_belongs_to_many ...
- 【python】抄写大神的糗事百科代码
照着静觅大神的博客学习,原文在这:http://cuiqingcai.com/990.html 划重点: 1. str.strip() strip函数会把字符串的前后多余的空白字符去掉 2. resp ...
- 厉害了,Google大神每天写多少行代码?
文章转自开源中国社区,编译自:Quora Quora上有个有趣的问题:Google工程师们每天写多少行代码? Google 的 AdMob 全栈工程师 Raymond Farias 在 Quora 发 ...
随机推荐
- 【linux系列】压缩和解压缩tar
tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...
- OGG 3节点级联时 关键参数
目标架构为: node1-> node2->node3 node1-> node2 已经同步中,只是需要在此基础上做个node2 ->node3 的同步. 部署后发现 node ...
- LeetCode 12 Integer to Roman (整数转罗马数字)
题目链接: https://leetcode.com/problems/integer-to-roman/?tab=Description String M[] = {"", ...
- Python中的str与bytes之间的转换的三种方法
# bytes object b = b"example" # str object s = "example" # str to bytes sb = byt ...
- Web前端编码规范[转]
先插入一条广告,博主新开了一家淘宝店,经营自己纯手工做的发饰,新店开业,只为信誉!需要的亲们可以光顾一下!谢谢大家的支持!店名: 小鱼尼莫手工饰品店经营: 发饰.头花.发夹.耳环等(手工制作)网店: ...
- scrapy-redis的使用与解析
scrapy-redis是一个基于redis的scrapy组件,通过它可以快速实现简单分布式爬虫程序,该组件本质上提供了三大功能: scheduler - 调度器 dupefilter - URL ...
- 【vue】vue.js安装教程/vue项目搭建
前提:已安装nodejs——npm (备注教程 “物理安装” ) 第一步:建了一个managerSys文件夹,用于保存项目 第二步:从cmd进入该文件夹,之后开始安装vue.js相关 1)在该项 ...
- 服务端渲染(ssr)初了解
之前接触的比较多的是SPA单页面应用,前端路由渲染,对于node服务端渲染刚开始了解到,服务端渲染的话相对于SPA来说有助于SEO优化,首屏加载更快. 和之前的SPA项目不同,之前公司spa的发布部署 ...
- PyCharm 4.0.4 开启代码自动补全
目前在使用的PyCharn 版本为4.0.4,在使用的过程中无法使用代码补全功能,经过Google 搜索只需要修改两处即可实现代码补全 1 选择File-Setting-Inspections 找到对 ...
- 2018C语言第三次作业
要求一 2.struct sk{int a; char *str)}*p; p->str++ 中的++ 加向? ++加向srt的地址. 要求二 题目1-计算平均成绩 1.设计思路 (1)主要 ...