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 |
Re:裸的迪杰特斯拉In Reply To:裸的迪杰特斯拉 Posted by:KatrineYang at 2016-08-21 09:27:55 > #include <iostream> > #include <stdio.h> > using namespace std; > > int adjList[1010][1010]; > int adjDist[1010][1010]; > > int main() { > int T, N; > scanf("%d%d", &T, &N); > int adjNum[1010] = {0}; > for(int i = 0; i < T; i++){ > int f, t, d; > scanf("%d%d%d", &f, &t, &d); > if(f == t) continue; > adjList[f][adjNum[f]] = t; > adjDist[f][adjNum[f]] = d; > adjNum[f]++; > adjList[t][adjNum[t]] = f; > adjDist[t][adjNum[t]] = d; > adjNum[t]++; > } > int dist[1010]; > int Dist[1010]; > bool used[1010] = {0}; > used[1] = 1; > dist[1] = 0; > Dist[1] = 0; > for(int i = 2; i <= N; i++) dist[i] = 2147483647; > int added = 1; > while(1){ > for(int i = 0; i < adjNum[added]; i++){ > if(used[adjList[added][i]]) continue; > if(dist[added] + adjDist[added][i] < dist[adjList[added][i]]){ > dist[adjList[added][i]] = dist[added] + adjDist[added][i]; > } > } > int mn = 2147483647; > int arg = -1; > for(int i = 2; i <= N; i++){ > if(!used[i] && dist[i] < mn){ > mn = dist[i]; > arg = i; > } > } > used[arg] = 1; > Dist[arg] = dist[arg]; > added = arg; > if(arg == N){ > break; > } > } > printf("%d\n", Dist[N]); > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator