Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
show一段有浓浓Pascal风格的c的AC代码刚从Pascal转c,好诡异,枚举范围的 #include<stdio.h> long head[10001],next[10001],link[10001],w[10001]; long lv[102],a[102]; long d[102],h[102]; long i,j,k,m,n,lim,tot,x,y,z; short v[102]; long spfa(){ long i,c,o; memset(d,60,sizeof(d)); memset(v,0,sizeof(v)); d[0]=0;h[1]=0;v[0]=1;c=1;o=2; do{ i=head[h[c]]; while (i!=0){ if ((d[h[c]]+w[i]<d[link[i]])&&(lv[link[i]]>=lv[0])&&(lv[link[i]]<=lv[0]+m)){ d[link[i]]=w[i]+d[h[c]]; if (!v[link[i]]){ v[link[i]]=1; h[o++]=link[i]; if (o>101) o=1; } } i=next[i]; } v[h[c++]]=0; if (c>101) c=1; }while (c!=o); return d[1]; } void add(long a,long b,long t){ link[++tot]=b; w[tot]=t; next[tot]=head[a]; head[a]=tot; } void qsort(long l,long r){ long i,j,x,t; i=l;j=r;x=a[(l+r)>>1]; while (i<=j){ while (a[i]<x) i++; while (a[j]>x) j--; if (i<=j){ t=a[i];a[i]=a[j];a[j]=t; i++;j--; } } if (l<j) qsort(l,j); if (i<r) qsort(i,r); } int main(){ scanf("%ld%ld",&m,&n); tot=0; memset(head,0,sizeof(head)); for (i=1;i<=n;i++){ scanf("%ld%ld%ld",&x,&lv[i],&k); add(0,i,x); for (j=1;j<=k;j++){ scanf("%ld%ld",&x,&y); add(x,i,y); } } memmove(a,lv,sizeof(lv)); qsort(1,n); z=200000000; for (i=1;i<=n;i++){ lv[0]=lv[i]; x=spfa(); if (x<z) z=x; } printf("%ld\n",z); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator