diff options
author | Santo Cariotti <sancn@live.com> | 2017-03-17 21:00:23 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-17 21:00:23 +0100 |
commit | eff9b7e3ac6f894e03d644bfba564909a260794c (patch) | |
tree | 18772921408e1231f7f4f4088d875e22fe17b70c /Es5.cpp | |
parent | 47a54787726a158f89c4f0a0301cb2d80b55e267 (diff) |
Grafi
Diffstat (limited to 'Es5.cpp')
-rw-r--r-- | Es5.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
@@ -0,0 +1,46 @@ +#include <iostream>
+#define BIANCO 0 //Non Visitato
+#define NERO 2 //Visitato
+#define GRIGIO 1 //Non Finito
+#define INF 999999
+#include <vector>
+#include <fstream>
+#include <queue>
+#define MAXN 9999
+#define INDEF -1
+#include <stack>
+using namespace std;
+typedef pair <int,int> p;
+struct nodo{
+ vector<int> adj;
+ vector<int> p;
+};
+
+int main(int argc, char** argv) {
+ int v,e;
+ int sorgente;
+ nodo no[v];
+
+ priority_queue<p> Q;
+ int peso[v];
+ Q.push(p(0,sorgente));
+
+ while(!Q.empty())
+ {
+ pair <int,int> a=Q.top();
+ Q.pop();
+ if (a.first > peso[a.second])
+ continue;
+
+ for (int i=0;i<no[a.second].adj.size();i++)
+ {
+ if (peso[no[a.second].adj[i]]>a.first+ no[a.second].p[i])
+ {
+ peso[no[a.second].adj[i]]=a.first + no[a.second].p[i];
+ Q.push(p(peso[no[a.second].adj[i]],no[a.second].adj[i]));
+ }
+ }
+
+ }
+ return 0;
+}
|