#include
#include
#include
using namespace std;struct Node {int bugs, dist;bool operator < (const Node& rhs) const {return dist > rhs.dist;}
};
const int maxn = 20;
const int maxm = 100 + 5;
const int INF = 1000000000;int n, m, t[maxm], dist[1< q;Node start;start.dist = 0;start.bugs = (1<
表示完状态后基本上就是裸的dijkstra,按照这个思路我又写了一个SPFA,如下
#include
#include
#include
#include
#include
using namespace std;
const int maxn=25;
const int maxm=100+5;
const int INF=2147483647;int tim[maxm];
char before[maxm][maxn],after[maxm][maxn];
int beg,gol,kase=0;
int n,m;
int d[1<q;q.push(s);d[s]=0;inq[s]=0;while(!q.empty()){int u=q.front();q.pop();inq[u]=0;for(int i=0;id[u]+tim[i]){d[v]=d[u]+tim[i];if(!inq[v]){q.push(v);inq[v]=1;if(++cnt[v]>=(1<>tim[i];cin>>before[i]>>after[i];}beg=(1<