Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstdio>#include <cstring>#include <vector>using namespace std;vector <int> edge[550];int vis_point[550];int vis_edge[550][550];int q[550 * 550];int n, m;void init(){memset(vis_point, 0, sizeof(vis_point));memset(vis_edge, 0, sizeof(vis_edge));for(int i = 0; i < n; i++){edge[i].clear();}}void bfs(int st){int fr = 0, ta = -1;q[++ta] = st;vis_point[st] = 1;while(fr <= ta){int p = q[fr++];for(int i = 0; i < edge[p].size(); i++){int temp = edge[p][i];if(0 == vis_edge[p][temp] && 0 == vis_edge[temp][p])