HDU Today(自己的代码不知道哪里错了一直没A抄袭大神的)
2014-06-28 10:29
471 查看
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<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; }
相关文章推荐
- 发表个asp.net的代码生成工具吧,自己写的,一直在项目中使用的,类似Pet Shop代码格式
- 就算和你没有结局,我还是喜欢你(打上去,然后,删除,打上去,然后删除,打上去,然后,又删除。不清楚自己在想什么,不知道什么该说。想和你一起,真的!总之,会一直写下去,一定会一直写下去!)
- linux udp 客户端recvfrom,一直没有数据接收,谁能帮看看这代码哪里出了问题了????
- iOS 代码规范(参考大神博客+自己想法)
- 看别人的C/C++代码时发现自己所不知道的语法~
- ASP导出excel文件的代码(自己试验成功并且一直在使用的哟)
- 为什么我的代码一直都是WA,求大神指点
- 浅谈解耦的意义---我们一直追求解耦,却不知道她哪里好
- CF 1B. Spreadsheets(自己代码以及大神代码)
- 今天因为某些原因,把项目中的js代码更换了一些,结果不知道哪里改错了,页面跳转老是跳转不到指定页面
- 计时,自己写的...能跑.问题是有的,但不知道是哪里出了问题
- 这是配置的代码,不知道写在哪里?
- 毕设 !!!(红色代码为电机控制,为什么按下按键电机转动一段时间以后,自己又停了呢,理论上不按停止应该一直转啊???!!!)
- 自己做的一种计算器算法的设计..不知道代码是否有bug
- 最近 因为 一个take阻塞 一直占有当前获取的lock 导致奇怪的现象 这里把自己的测试代码贴下 免得下次犯错
- 写自己最优秀的代码,让别人抄袭去吧~
- 代码有警告不知道哪里有问题!
- 程序一直报错,不知道该如何改了,望各位大神帮我看看
- 你怎么看待自己的代码被抄袭?
- java 实现.Z解压(代码是忘记在哪里找到的,自己整合了一下)