开始用dij求最短路径,结果超时,最后用dfs回溯剪枝,ac了
#include<iostream>
#include<vector>
#include<cstdlib>
#include<set>
#include<cstring>
#pragma warning(disable:4996)
using namespace std;
struct ArcNode {
int line;
int data;
ArcNode *next;
};
struct VNode {
ArcNode *first,*last;
VNode() { first = last = NULL; }
};
struct renode {
int be, en;
int line;
renode() = default;
renode(int b, int e, int l) { be = b;en = e;line = l; }
};
struct resault {
int length;
vector<renode> all;
resault() { length = 0;all.resize(0); }
bool operator<(const resault b)const {
return length < b.length ||
(length == b.length && all.size() < b.all.size());
}
};
set<int&