圖以及DFS和BFS
阿新 • • 發佈:2019-01-31
struct Edge{
Point start;
Point end;
};
class graph
{
private:
int edge[1000][1000];
Edge edge_set[1000];
int Pnum = 0;
int Enum = 0;
Point pset[1000];
public:
graph()
{
memset(edge, 0, sizeof(edge));
}
//增加點
void addpoint(Point a);
//增加邊
void addedge(int i, int j,int value);
//清空點
void clear_pset();
void clear_edge();
//通過向量叉乘符號來進行定義 ,必須嚴格大於0,在一條線上的也不算left
bool toleft(Point a, Point b, Point k);
int cross_product(Point a, Point b, Point k);
bool in_triangle(Point a, Point b, Point c, Point k);
int graham_scan(Point *res);
//返回extreme edge的個數
int EE(Point *res);
//Jarvis Marching
int JM(Point *res);
void dijkstra(int start_p,int res[][2]);
void floyd(int dist[][1000], int mid[][1000]);
void bfs(int start,int *res);
void dfs(int start);
};