commit 63b3e263110a19ec69e6c8ad6e9fb2af5c382fe8
parent e55d18c95811cc27d14f880aa67adfcb31c8302c
Author: Jachiet Louis <louis@jachiet.com>
Date: Sat, 5 Apr 2014 13:14:06 +0200
Merge branch 'master' of gitorious.org:ens-ulm-1/ens-ulm-1
Diffstat:
2 files changed, 70 insertions(+), 1 deletion(-)
diff --git a/contest/mc/lecture.cpp b/contest/mc/lecture.cpp
@@ -3,6 +3,7 @@
#include <map>
#include <algorithm>
#include <cstdio>
+#include <string.h>
#define N_SOMMETS_MAJ 12000
#define N_ARETES_MAJ 18000
@@ -39,6 +40,36 @@ void affiche_sortie(vector<int> trajectoires[]) {
}
}
+// format: score, temps1, temps2, ..., temps8
+// (ou vide si solution invalide)
+vector<int> evalue_solution(vector<int> trajectoires[]) {
+ bool aretes[N_ARETES_MAJ];
+ memset(aretes, 0, sizeof(aretes));
+ vector<int> resultat;
+ resultat.push_back(0);
+
+ int score = 0;
+ for (int i=0; i< n_vehicules; i++) {
+ int temps = 0;
+ for (int j=0; j< trajectoires[i].size() - 1; j++) {
+ pair<int, int> p = make_pair(trajectoires[i][j], trajectoires[i][j+1]);
+ int a = id_arete[p];
+ if (!a) {
+ resultat.clear();
+ return resultat;
+ }
+ if (!aretes[a]) {
+ score += longueur[a];
+ aretes[a] = 1;
+ }
+ temps += cout[a];
+ }
+ resultat.push_back(temps);
+ }
+ resultat[0] = score;
+ return resultat;
+}
+
void lecture_entree(){
scanf("%d",&n_sommets);
scanf("%d",&n_aretes);
@@ -46,7 +77,7 @@ void lecture_entree(){
scanf("%d",&n_vehicules);
scanf("%d",&s_depart);
for(int i=0;i<n_sommets;i++)scanf("%lf %lf",&longitudes[i],&latitudes[i]);
- for(int i=0;i<n_aretes;i++){
+ for(int i=1;i<=n_aretes;i++){
int x;
scanf("%d %d %d %d %d",&depart[i],&arrivee[i],&x,&cout[i],&longueur[i]);
dbsens[i]=(x==2);
diff --git a/contest/mc/mc2.cpp b/contest/mc/mc2.cpp
@@ -0,0 +1,38 @@
+#include "lecture.cpp"
+
+vector<int> sortie[8];
+
+
+
+void completion_hasard(int t, int i){
+ int pt=sortie[i][sortie[i].size()-1];
+ while(true){
+ int d=rand()%(adj[pt].size());
+ int ar=id_arete[make_pair(pt,adj[pt][d])];
+ if(t+cout[ar]>t_autorise) break;
+ t+=cout[ar];
+ sortie[i].push_back(adj[pt][d]);
+ pt=adj[pt][d];
+ }
+
+}
+
+
+
+int main(){
+srand(time(NULL));
+lecture_entree();
+
+printf("%d\n",n_vehicules);
+for(int i=0;i<n_vehicules;i++){
+
+ int pt=s_depart;
+ sortie[i].push_back(s_depart);
+ completion_hasard(0,i);
+
+
+ printf("%d\n",sortie[i].size());
+ for(int j=0;j<sortie[i].size();j++){printf("%d\n",sortie[i][j]);}
+}
+}
+