仍然是水题,不然我也不会这么随意都做出来了,哥们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!