**源自:柳婼 の blog,感謝大神!
解答這一題要同時用到dijkstra,先求若干條最短路徑。然後用dfs在所有的最短路徑中找出所求的最佳資料。
哎,對於dfs的回溯部分還是不太熟悉,有些疑問。
哈哈,我快成給柳神寫**注釋的了~加油鴨!要自己寫**鴨~
#include #include #include using namespace std;
const int inf = 99999999;
int cmax, n, sp, m;
int minneed = inf, minback = inf;
int e[510][510], dis[510], weight[510];
bool visit[510];
vectorpre[510], path, temppath;二維向量
void dfs(int v) }}
if(need < minneed)
else if(need == minneed && back < minback)
temppath.pop_back();回溯???回溯???
return ;
}for(int i = 0; i < pre[v].size(); i++)
dfs(pre[v][i]);///根據dijkstra求的最短路徑前驅陣列,對v的每個前驅進行遍歷
temppath.pop_back();///回溯
}int main()
for(int i = 0; i < m; i++)
dijkstra
dis[0] = 0;//0為源點
for(int i = 0; i <= n; i++)
}//if(u == -1) break;
visit[u] = true;//更新
for(int v = 0; v <= n; v++)
else if(dis[v] == dis[u] + e[u][v])//同一點可有多個前驅
pre[v].push_back(u);}}
}dfs(sp);
printf("%d 0", minneed);
for(int i = path.size() - 2; i >= 0; i--)
printf("->%d", path[i]);
printf(" %d", minback);
return 0;
}
記錄PTA甲級以及C 部分語法知識1012
c 中的sort可對給定區間的所有元素進行排序 include sort begin,end,cmp cmp引數可以沒有,如果沒有預設非降序排序。源自 感謝!這一題我覺得主要是結構體組織的問題吧。相對於我一開始想把id設為字串的想法,用int會好一些。另外,不應該將每門課的成績都開乙個陣列,這樣不同...
記錄PTA甲級以及C 部分語法知識1023
include includeusing namespace std int ans 10 char num1 22 char num2 22 int main void if up 0 ans up 最後的進製 for i 1 i 10 i if ans i 0 break 判斷ans是否全部都為...
記錄PTA甲級以及C 部分語法知識1028
這一題也是不是很難。主要是字串處理的問題。我個人還是比較習慣於c風格的字元陣列的模式。要注意使用strcmp等函式時要加上標頭檔案cstring或者string.h。另外自定義cmp函式中的兩個小問題 一是strcmp返回值是整型數值 1 0或1,要在函式中合理定義。二是分數的比較中,要選擇小於等於...