摘要:题意是给定n个点,包括坐标和这个点照亮范围,使1、2、3三点连通最多删去几个点,也就是最少留下几个点构造两两之间的边,如果同一个点边权是0,如果可以照亮其中一个边权为1求出1和2和3到所有点最短路,d=min(dist[1][i]+dist[2][i]+dist[3][i]+1),可连通的话n-d-...
阅读全文
摘要:只需要把这条边上的最短路当成后一个点的权就好啦唯一的起始点1到1的距离就是g[1][1]这样相当于1被分离出来啦! 1 #include 2 #include 3 #include 4 using namespace std; 5 int n,m,vis[2005],dist[2005],g[200...
阅读全文
摘要:用floyd处理最短路的同时更新路上最多节点。然后枚举重合线段,只要符合两条都是最短路即可更新ans。 1 #include 2 #include 3 #include 4 using namespace std; 5 int dis[315][315],num[315][315]; 6 int m...
阅读全文
摘要:1 #include 2 #include 3 int g[105][105],next[105][105],v[105]; 4 int main() 5 { 6 int n,i,j,a,b,k,flag; 7 while (~scanf("%d",&n)&&n) 8 { ...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 struct Edge 7 { 8 int to; //边终点 9 int w; //边值10 int next;//结构体模拟链...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 struct Edge 7 { 8 int to; //边终点 9 int w; //边值10 int next;//结构体模拟链...
阅读全文
摘要:1 #include 2 #define max 100000000; 3 int main() 4 { 5 int n,m,i,j,k,min,a,b,c,hash[1005],ar[1005],length[105][105]; 6 while (~scanf("%d%d",&...
阅读全文