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 |
there can be double edgesIn Reply To:...Why MyCode got WA ......./ Please save me. Posted by:cddong at 2006-06-03 15:06:11 there can be double edges > I think this problem solve by Dijkstra Algorithm. > and I don't think this algorithm get TL or WA , in N<=1000,T<=2000 > but.,,.,., > I got WA... It's very strange .. :( > please help me . > > My Code : > /***CodeStart***/ > #include <stdio.h> > > int t, n ; > int a[ 1010 ][ 1010 ] ; > int v[ 1010 ] ; > int d[ 1010 ] ; > > void input(); > void process(); > void output(); > > int main() > { > input(); > process(); > output(); > return 0 ; > } > void input() > { > scanf("%d %d",&t,&n); > int i , j ; > for ( i = 1 ; i <= n ; i ++ ) > for ( j = 1 ; j <= n; j ++ ) > { > if ( i == j ) a[i][j] = 0 ; > else a[i][j] = 2100000000 ; > } > int t1, t2 , t3 ; > for ( i = 0 ; i < t ; i ++ ) > { > scanf("%d %d %d",&t1,&t2,&t3 ) ; > a[t1][t2] = t3 ; > a[t2][t1] = t3 ; > } > } > void process() > { > int i , j ; > int min , mini ; > for ( i = 1 ; i <= n ; i ++ ) > { > d[i] = 2100000000 ; > v[i] = 0 ; > } > d[1]=0; > for ( i = 1 ; i <= n ; i ++ ) > { > min = 2100000000; > for ( j = 1 ; j <= n ; j ++ ) > { > if ( v[j] == 0 && min > d[j] ) > { > min = d[j] ; > mini = j ; > } > } > v[mini] = 1 ; > for ( j = 1 ; j <= n ; j ++ ) > if ( d[j] > d[mini] + a[mini][j] ) > d[j] = d[mini] + a[mini][j] ; > } > } > > void output() > { > printf("%d\n",d[n]); > } > /*** Code End ***/ Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator