POJ 1847 Tram

仍然是水题,不然我也不会这么随意都做出来了,哥们AC个题,真TM不easy!

这个算是一个正宗的最短路了,如何建图,也很明显。。

View Code
#include <stdio.h>

#define N 102

unsigned char map[N][N];
unsigned char dist[N];
unsigned char flag[N];

void Dijsktra(int s,int e,int n)
{
int i,j,v;

for(i=0;i<=n;i++) dist[i]=map[s][i],flag[i]=0;
flag[s]=1;

for(i=1;i<n;i++)
{
for(v=0,j=1;j<=n;j++)
{
if(!flag[j] && dist[v]>dist[j])
v=j;
}
flag[v]=1;
for(j=1;j<=n;j++)
{
if(!flag[j] && dist[v]+map[v][j]<dist[j])
{
dist[j]=dist[v]+map[v][j];
}
}
}

}

int main()
{
int n,a,b;
int i,j,m,num;

freopen("input.txt","r",stdin);
while(scanf("%d %d %d",&n,&a,&b)!=EOF)
{
for(i=0;i<=n;i++)for(j=0;j<=i;j++)map[i][j]=map[j][i]=0xff;

for(i=1;i<=n;i++)
{
scanf("%d %d",&m,&num); m--; map[i][num]=0;
for(j=0;j<m;j++)
{
scanf("%d",&num);
map[i][num]=1;
}
}
Dijsktra(a,b,n);

if(dist[b]!=0xff)
printf("%d\n",dist[b]);
else printf("-1\n");
}

return 0;
}

空间132KB 时间0MS 感到很满意了。。可是随便看了看此题排行!

那尼玛无语前边的都是 32KB 0MS 这……这……吓住我了!!

难道他们的map数组用的是一位的变量。。可是怎么定义一位的变量啊?!

到网上搜了搜也没找到,直接搜源码的尼玛也搜不到,这什么情况?

不只是这个题还有一些题都是这样,不知大牛们都是怎么写啊!!!谁能告诉我。。。。GOD!……ORZ!

原文地址:https://www.cnblogs.com/fornever/p/2394206.html