Topcoder 2C 250 最短路

简介:

    唯一写出来的一题,但也华丽丽地跪了……比赛的时候没有看清可以同时多对一起跳舞,果断跪了

     直接先最短路一下,然后除3,因为每3个人才能认识一个新人


#include <vector>
#include <list>
#include <cstring>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>

using namespace std;

class DancingFoxes {
public:
	int minimalDays(vector <string>);
};
struct node
{
    int v,now;
	friend bool operator <(node a,node b)
	{
	   return a.now>b.now;
	}
};

int dijkstra(int v,vector <string> M)
{
    priority_queue<node> q;
      bool don[51];
		int Dis[55];
      int n=M.size();
      memset(don,0,sizeof(don));
      memset(Dis,63,sizeof(Dis));
      Dis[v]=0;
      node now,next;
      now.v=v;
      now.now=0;
      q.push(now);
      while(!q.empty())
      {
         now=q.top();q.pop();
         int v=now.v;
        // cout<<now.v<<endl;
         if(don[v])continue;
         don[v]=1;
         for(int i=0;i<n;i++)
         {
             if(M[v][i]=='N')continue;
             int t=Dis[v]+1;
             if(t>=Dis[i])continue;
             Dis[i]=t;
         
             next.v=i;
             next.now=t;
             q.push(next);
          }
       }
       if(Dis[1]==Dis[54])return -1;
       int ans=0,t=Dis[1]+1;
       while(t>2)
       {
           t-=t/3;
           ans++;
       }
       return ans;
}
              



int DancingFoxes::minimalDays(vector <string> friendship) {
    return dijkstra(0,friendship);
	
}


//Powered by [KawigiEdit] 2.0!


目录
相关文章
|
1月前
|
算法
最短路之Floyd算法
最短路之Floyd算法
43 1
|
1月前
|
算法
最短路之Dijkstra算法
最短路之Dijkstra算法
31 0
|
7月前
|
算法
Floyd算法的应用
Floyd算法的应用
38 0
|
1月前
|
算法
Frogger(Floyd算法)
Frogger(Floyd算法)
|
6月前
|
C++
|
6月前
|
机器学习/深度学习 编解码 算法
|
6月前
|
算法
floyd算法
floyd算法
|
机器学习/深度学习 算法
floyd算法的实现
floyd算法的实现
|
算法
Floyd算法(多源最短路径问题)
Floyd算法(多源最短路径问题)
108 0
Floyd算法(多源最短路径问题)
|
机器学习/深度学习 定位技术