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 |
一直WA!!不知什么原因?这条题有什么值得注意的?#include "iostream" #include "map" #include "set" using namespace std; int f,p,c,m; void solve() { const int max = 0x7fffffff; map<int,int> maps; set<int> s; int a[501][501]; bool flag[501] = {false}; int len[501]; int i,j; int l,r,tm; for (i=0; i<501; i++) { len[i] = max; for (j=0; j<501; j++) a[i][j] = max; } for (i=1; i<=p; i++) { cin >> l >> r >> tm; a[l][r] = tm; a[r][l] = tm; } for (i=1; i<=c; i++) { cin >> l; maps.insert(pair<int,int>(l,i)); } len[1] = 0; flag[1] = true; for (i=2; i<=f; i++) len[i] = a[1][i]; while (true) { l = 0x7fffffff; for (i=2; i<=f; i++) if (flag[i] == false && len[i] < l) { l = len[i]; r = i; } if (l > m) break; flag[r] = true; for (i=2; i<=f; i++) { if (flag[i] == false && len[r]+a[r][i] < len[i] && a[r][i] != 0x7fffffff) { len[i] = len[r]+a[r][i]; } } } for (i=1; i<=f; i++) if (len[i] <= m) { map<int,int>::iterator q = maps.find(i); if (q != maps.end()) s.insert(q->second); } cout << s.size() << endl; for (set<int>::iterator q=s.begin(); q!=s.end(); q++) cout << *q << endl; } int main() { //freopen("s.txt","r",stdin); while (cin >> f >> p >> c >> m) solve(); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator