随笔分类 - shortest paths
摘要:最近比较懒,一种方法A了以后不想再去学习别的方法,诶,需要调整本题:邻接表 + bfs +优先队列 32MS还行View Code #include<stdio.h>#include<string.h>#include<queue>using namespace std;#define INF 100000000#define maxn 103#define maxm 10003struct node{ int c, l, w; node(int cc,int ll,int ww):c(cc),l(ll),w(ww) {} friend bool opera
阅读全文
摘要:我靠,这么水的题目让我那么纠结,直到A了也不知道数据范围为多大。View Code #include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<queue>#define maxn 50005using namespace std;int cost[maxn],head[maxn];bool vis[maxn];long long dis[maxn];struct node{ int v,w,next;}list[maxn*2];in
阅读全文
摘要:字符串处理+dijkstra修改一下View Code #include<stdio.h>#include<string.h>#define maxn 201int n,m,num;int dis[maxn],adj[maxn][maxn];bool vis[maxn];int MIN(int a ,int b){ return a < b ? a : b;}int MAX(int a, int b){ return a > b ? a :b;}char str[201][35],s[35];int find(){ int i; for(i=0;i<n
阅读全文
摘要:写2个dijkstra,一个逆向一个顺向View Code #include<stdio.h>#include<string.h>#define maxn 1001#define INF 100000000int dis[maxn],adj[maxn][maxn],d[maxn];bool vis[maxn];int m, n;void dijkstra(int v) //顺向{ int i ,j ,k, u, min; for(i=0;i<=n;i++) { dis[i]=adj[v][i]; vis[i]=0; } vis[...
阅读全文
摘要:dijkstra略微做下修改View Code #include<stdio.h>#include<string.h>#define maxn 1001#define INF 100000000int MIN(int a, int b){ return a < b ? a : b;}int dis[maxn],adj[maxn][maxn];bool vis[maxn];int n, m;void dijkstra(int v){ int i, j, k, u, max; for(i=1;i<=n;i++) { dis[i]=adj[v][i]; ...
阅读全文
摘要:水题一枚数据规模不是很大,可以用floyd暴力过View Code #include<stdio.h>#include<string.h>#define INF 30#define maxn 101int dis[maxn][maxn];int n, m;void floyd(){ int i, j, k; for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(k!=i&&k!=j) if(dis[i][k]+dis[k...
阅读全文
摘要:HDU 1874 畅通工程续水dijkstraView Code #include<stdio.h>#include<string.h>#define INF 1000000#define maxn 201int adj[maxn][maxn],dis[maxn];//pre[maxn]bool vis[maxn];int n ,m;int dijkstra(int src, int dest){ int i ,j, k, u, min; for(i=0;i<n;i++) { vis[i]=0; dis[i]=adj[src][i]; ...
阅读全文
摘要:题意:求源点1到其它任意点的最小值 之中的最大值。题意理解后,dijkstra水题View Code #include<stdio.h>#include<string.h>#define maxn 101#define INF 100000000int n, m;int adj[maxn][maxn],dis[maxn];int max;bool vis[maxn];int dijkstra(int v){ int i,j,k,min,u; for(i=1;i<=n;i++) { dis[i]=adj[v][i]; vis[i]=0; } ...
阅读全文
摘要:典型的水floydView Code #include<stdio.h>#include<algorithm>#include<string.h>using namespace std;#define INF 1000000#define maxn 1001int adj[maxn][maxn],dis[maxn][maxn],pos[maxn];int n, m, num;void floyd(){ int i ,j ,k; for(i=1;i<=n;i++) for(j=1;j<=n;j++) dis[i][j]=adj[i][j]; ...
阅读全文
摘要:最朴素最短路适用条件:边权必须为非负;以HDU2544为例View Code #include<stdio.h>#include<string.h>#define INF 100000000#define maxn 1001bool vis[maxn];int adj[maxn][maxn],dis[maxn],pre[maxn];//pre[]记录前驱int n, m;void dijkstra(int v){ int i, j, u , min; for(i=0;i<=n;i++) { dis[i]=adj[v][i]; vis[i]=0; ...
阅读全文

浙公网安备 33010602011771号