260

#include <iostream> #include <map> #include <stack> #include <queue> #include <string> #include <cstring> #define INF 1000000000 using namespace std; string row[205]; bool trace[205][205]; int N; struct node{ int x; int y; }; int floodFillDfs(node a) { //stack<node> s; queue<node> s; map<int,int> mp; s.push(a); int i,j; int r =0; while(!s.empty()) { node t= s.front();//s.top(); s.pop(); i=t.x; j=t.y;

222

#include <iostream> #include <cstdio> #include <queue> #define INF 1000000 using namespace std; struct state{ int presnt; double rem_gas; double cost; }; double d[55],price_gal[55]; double gr[55][55],dst[55][55]; bool visit[55]; int L; double dist,cango; double capacity,dist_pergal,price; int station; double MN; int recurs(state a) { int pos = a.presnt; double gaso = a.rem_gas; double cst = a.cost; state t;

571

#include <iostream> #include <queue> #include <string.h> #include <map> #include <vector> #define EmA 3 #define EmB 4 #define FilA 1 #define FilB 2 #define PorAB 5 #define PorBA 6 using namespace std; struct point{ int x; int y; }; point inp,rp,tmp; int gr[1002][1002]; int work[1002][1002]; point par[1002][1002]; vector<int> vb; int A,B,C; void path(point p) { int

10085

#include <iostream> #include <string.h> #include <string> #include <vector> #define MX 1000003 using namespace std; int kase = 1; int in[9]; int visit[MX]; int next[MX]; int par[MX]; char val[MX]; int num[MX][9]; int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}}; vector<int> vb[MX]; string s; int GetHash(int *arr) { int h=0; for(int i=0;i<9;i++) { h=h*10+arr[i]; } h=h%MX; return h; } bool isNew(int *arr,int pos)

208

#include <iostream> #include <string.h> #include <stdio.h> #include <vector> #include <algorithm> using namespace std; int mat[25][25]; int dist[25][25]; vector<int> vb[25]; bool visit[25]; int fire; int kase=1; int mx=0,cnt=0; int res[25]; void dfs(int s,int k) { if(s==fire) { cnt++; for(int i=0;i<k;i++) { cout<<res[i]<<(i==(k-1)?"\n":" "); } return; } //for(int i=0;i<vb[s].size();i++) for(int i=1;i<=mx;i++) { if(visit[i]) continue; if(!mat[s][i]) continue; if(!dist[i][fire])

459

This problem can be solved using dfs,bfs or union find algorithm, BFS solution: #include <iostream> #include <stdio.h> #include <string.h> #include <map> #include <queue> #include <string> using namespace std; int to; bool visit[26]; int graph[26][26]; void bfs(int a) { int b; queue<int> q; q.push(a); while(!q.empty()) { b =q.front(); q.pop(); visit[b]=1; for(int i=0;i<=to;i++) { if(graph[b][i]==1 && visit[i]==0)

10308

This is the problem to find the tree diameter. #include <iostream> #include <fstream> #include <sstream> #include <map> #include <vector> #include <string> #include <queue> #include <string.h> #include <stdio.h> #define ull unsigned long long #define SZ 10002 #define FOR(i,a) for(int i=0;i<a;i++) using namespace std; vector<int> graph[SZ]; bool visit[SZ]; int distnce[SZ][SZ]; ull distnode[SZ]; ull max_dist=0; int farthestnode; void

11709

#include <iostream> #include <map> #include <vector> #include <string> #include <queue> #include <string.h> #include <stdio.h> using namespace std; vector<int> graph[1005]; bool visit[1005]; bool visited[1005][1005]; map<string,int> mp; int p,t; void dfs(int u,int v) { visited[u][v]=1; int tmp; for(int i=0;i<graph[v].size();i++) { tmp=graph[v][i]; if(!visited[u][tmp]) { dfs(u,tmp); } } } int main() { string s,s1; while(cin>>p>>t) { if(p==0 && t==0)