<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_35109846的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_35109846</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_35109846]]></copyright><item><title><![CDATA[杭电 1595 find the longest of the shortest Dijstra]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/72247467</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/72247467</guid><author>qq_35109846</author><pubDate>Tue, 16 May 2017 11:55:52 +0800</pubDate><description><![CDATA[玛丽卡很生米尔科的气因为他找到了一个新的女朋友，她寻求报复。因为她不住在同一个城市，她开始准备长途旅行。我们知道每路多少分钟来从一个城市到另一个。
米尔科无意中听到车里有一条路正在修理，它被堵住了，但不知道到底是哪条路。它可能来自马西娅的城市米尔科的无论哪一条路是封闭的。
玛丽卡只会用非阻塞的道路旅行，她会以最短路径旅行。米尔科想知道要花多少时间她会在最坏的情况下，他的城市，所以他可以让他的女]]></description><category></category></item><item><title><![CDATA[杭电 1546 Idiomatic Phrases Game 最短路 Dijstra]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/72236919</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/72236919</guid><author>qq_35109846</author><pubDate>Tue, 16 May 2017 11:18:05 +0800</pubDate><description><![CDATA[题意：给定一个整数  和一串字符串，当字符串末端的四个字符与另一字符串的首端四个字符相同时，加上前面的字符串，然后找出连接状态的最小值，而且每一个符合条件的字符串的首尾四个字符必须相同，才能相加
#include
#include
#include
using namespace std;
char a[1005][1005];
int w[1005][1005];
int vis[1005];]]></description><category></category></item><item><title><![CDATA[杭电 2544 最短路 Dijstra]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/72236417</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/72236417</guid><author>qq_35109846</author><pubDate>Tue, 16 May 2017 10:38:51 +0800</pubDate><description><![CDATA[最短路
Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 34170    Accepted Submission(s): 14833



Problem Description

在每年的校赛里，所有进入决赛的同学都会获]]></description><category></category></item><item><title><![CDATA[杭电 2066 一个人的旅行 最短路 Dijstra]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/72235753</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/72235753</guid><author>qq_35109846</author><pubDate>Tue, 16 May 2017 09:39:54 +0800</pubDate><description><![CDATA[一个人的旅行
Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 20267    Accepted Submission(s): 7081



Problem Description

虽然草儿是个路痴（就是在杭电待了一年]]></description><category></category></item><item><title><![CDATA[杭电 1232 并查集水题 畅通工程]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/72082143</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/72082143</guid><author>qq_35109846</author><pubDate>Sun, 14 May 2017 21:51:28 +0800</pubDate><description><![CDATA[题意：N个城市，判断需要多少条道路连通  
例：8个城市都不连通的话最多需要7条道路
#include 
#include 
using namespace std;
int arr[100001];
int p, q;
int cnt;

void init() {
    for (int i=0; i<100001; i++) {
        arr[i] = i;
    }
}
]]></description><category></category></item><item><title><![CDATA[POJ 1856 More is better]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/72026973</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/72026973</guid><author>qq_35109846</author><pubDate>Sun, 14 May 2017 17:19:27 +0800</pubDate><description><![CDATA[一个并查集 计算每个集合的元素 找出元素最多的那个集合，输出元素的个数
输入n=0时也应该输出1，难点就在于，怎么计算集合的元素个数，其实只要在初始的时候每个元素都初始为1，
然后合并集合的时候把两个集合元素加一起
#include 
#include 
#include 

const int MAX = 10000005;
int pre[MAX],rank[MAX],maxx;


v]]></description><category></category></item><item><title><![CDATA[杭电 Is It A Tree? 并查集 有向图是否为树]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/72026909</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/72026909</guid><author>qq_35109846</author><pubDate>Sun, 14 May 2017 17:09:26 +0800</pubDate><description><![CDATA[注意 这和上面的题有点不一样 是一个有向图



所以要判断入度

否则会出现







判断成树的情况

#include
#include
#define max 1000+10
int set[max],in[max];//set记录父节点，in记录入度 
int find(int p)
{
    int child=p;
    int t;
    ]]></description><category></category></item><item><title><![CDATA[杭电 1272 小希的迷宫 并查集 无向图是否为树]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/72026786</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/72026786</guid><author>qq_35109846</author><pubDate>Sun, 14 May 2017 16:49:14 +0800</pubDate><description><![CDATA[一棵树必须具备如下特性：
（1）是一个全连通图（所有节点相通）
（2）无回路
其中（2）等价于：（3）图的边数=节点数-1
因此我们可以利用特性（1）（2）或者（1）（3）来判断。
#include     
#include     
#include     
#include     
#include     
#include     
#include   
#include]]></description><category></category></item><item><title><![CDATA[杭电 2120 并查集 判断环的个数]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/71954631</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/71954631</guid><author>qq_35109846</author><pubDate>Sun, 14 May 2017 13:25:56 +0800</pubDate><description><![CDATA[题意：富裕的女王 要给ACMER分地，女王的土地中有很多瞭望塔，女王命令下人在瞭望塔（watchtower） 与瞭望塔之间建立笔直的围墙，被围墙圈起来的土地可以用来奖励ACMER，但是女王智商捉急，不知道最多能奖励多少ACMER，请你来帮忙。

通过并查集的Union操作就可以实现瞭望塔之间的联通，如果两个瞭望塔所在根节点相同，说明有环。

思路：手动画图发现如果1 2 3的根节点都为0 ]]></description><category></category></item><item><title><![CDATA[杭电1829 A Bug's Life 并查集]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/71941098</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/71941098</guid><author>qq_35109846</author><pubDate>Sun, 14 May 2017 12:14:32 +0800</pubDate><description><![CDATA[假设有
1，2
2，3
即1--2--3， 明显相邻的两个不能是同性别的，如果相邻两个是同性的，那么说明就可能是有同性恋存在。
上面假设1是男性，用false来代替，那么按顺序分别是false, true, false
假设  再加个关系3， 1
那么由于1和3已经都有值了，都是false，说明可能有同性恋。
种类并查集的关键在于与结点与根结点的距离， 如果距离是奇数那么性别就和跟结]]></description><category></category></item><item><title><![CDATA[POJ 2524 宗教问题 并查集]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/71925011</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/71925011</guid><author>qq_35109846</author><pubDate>Sun, 14 May 2017 09:48:06 +0800</pubDate><description><![CDATA[题意：给出一些在一个集合的元素信息，求一共有多少个无交集的集合
题解：并查集，初始集合个数为人数，在合并集合的过程中，每次在一个集合里合并了一个人，集合个数就减一
#include   
#include   
using namespace std;  
const int maxn =50000+5;  
int fa[maxn];  
int Find(int x)  
{  
    ]]></description><category></category></item><item><title><![CDATA[POJ 1603 Risk 最短路 Floyd Dijstra]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/71915860</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/71915860</guid><author>qq_35109846</author><pubDate>Sun, 14 May 2017 09:22:52 +0800</pubDate><description><![CDATA[POJ 1603
每组数据先输入19组边信息，依次代表从第几个顶点出发有哪些边与之直接相连。
要注意的是图是无向图，所以在更改邻接矩阵时根据无向图的对称性来处理数据
就是求两点中间的最少的城市个数
public class Main
{
 static int[][] w=new int[21][21];
 static final int n=20;
 public static voi]]></description><category></category></item><item><title><![CDATA[POJ 1847 Tram Floyd或者spfa 最短路]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/71915708</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/71915708</guid><author>qq_35109846</author><pubDate>Sun, 14 May 2017 08:53:01 +0800</pubDate><description><![CDATA[题意：火车行驶过程有n条岔路（每次只能走一条），默认是第一条路..如果需要改路的话需要操作一次，问从a到b最少需要操作多少次....n个点 a,b是起点和终点，然后n行，第i行有k个点，代表第i个点可以走到这k个点，初始默认方向是第一个点的方向...其他的改道一次需要操作一次...按照操作次数当做边权求最短路即可..
输入：
3 2 1 //有3个开关点，计算从第二个到第一个最少需要旋转几次]]></description><category></category></item><item><title><![CDATA[POJ 2139 Six Degrees of Cowvin Bacon 最短路]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/71911348</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/71911348</guid><author>qq_35109846</author><pubDate>Sat, 13 May 2017 23:59:04 +0800</pubDate><description><![CDATA[题目大意：有n头牛，如果两头牛同拍一部电影，这他们之间的距离为一，如果两头牛都和第三头牛拍过同一部电影，那么它们之间的距离经第三头牛传递就为2，，，求那一头牛与其它牛距离的平均值最小，把他乘一百输出。（求的时候，先扩大一百倍再求平均值）
#include   
#include   
#include   
#include   
using namespace std;  
const int]]></description><category></category></item><item><title><![CDATA[POJ 2240 Arbitrage 最短路 Floyd]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/71910853</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/71910853</guid><author>qq_35109846</author><pubDate>Sat, 13 May 2017 23:35:50 +0800</pubDate><description><![CDATA[题意：首先给出N中货币，然后给出了这N种货币之间的兑换的兑换率。如 USDollar 0.5 BritishPound 表示 ：1 USDollar兑换成0.5 BritishPound。问在这N种货币中是否有货币可以经过若干次兑换后，兑换成原来的货币可以使货币量增加。 本题其实是FLOYD的变形。将变换率作为构成图的路径的权重。这儿构成的图是一个有向图。最后将松弛操作变换为:if(dis[i][]]></description><category></category></item><item><title><![CDATA[POJ 1502 MPI Maelstrom 最短路]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/71908460</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/71908460</guid><author>qq_35109846</author><pubDate>Sat, 13 May 2017 21:59:14 +0800</pubDate><description><![CDATA[题意：
给你一个不完全的矩阵，数字表示权值，x表示两点间不可达
由于自身到自身花费的时间为0，所以没有给出，由于i到j和j到i距离相同，互达时间相同
所以只给出了一半的临界矩阵。
根据给你的这个临界矩阵，让你来求从点1到其他点所花费最短时间集里面的的最大值。
其实这是一个很直接的最短路
package 最短路;


import java.util.Scanner;


p]]></description><category></category></item><item><title><![CDATA[POJ 3268 Silver Cow Party 最短路]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/71871103</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/71871103</guid><author>qq_35109846</author><pubDate>Sat, 13 May 2017 19:20:34 +0800</pubDate><description><![CDATA[题意：有编号为1－N的牛，它们之间存在一些单向的路径。给定一头牛的编号，其他牛要去拜访它并且拜访完之后要返回自己原来的位置，求这些牛中所花的最长的来回时间是多少。每头牛返回的最短时间很简单就可以算出来，这相当于从目标牛为起点求单源最短路径。但每头牛出发到目标牛的最短时间无法直接算出来，稍微转换一下，发现这个最短时间其实可以通过把所有的边取反向，然后再从目标牛求一次单源最短路径得到。得到这两个最短路]]></description><category></category></item><item><title><![CDATA[POJ 1797 Heavy Transportation]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/71856089</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/71856089</guid><author>qq_35109846</author><pubDate>Sat, 13 May 2017 17:53:58 +0800</pubDate><description><![CDATA[题目大意：有n个城市，m条道路，在每条道路上有一个承载量，现在要求从1到n城市最大承载量，而最大承载量就是从城市1到城市n所有通路上的最大承载量
解题思路：其实这个求最大边可以近似于求最短路，只要修改下找最短路更新的条件就可以了
#include   
using namespace std;  
#define MAXV 1010  
#define min(a,b) (a<b?a:b)  ]]></description><category></category></item><item><title><![CDATA[POJ 2253 Frogger 最短路]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/71850076</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/71850076</guid><author>qq_35109846</author><pubDate>Sat, 13 May 2017 17:35:16 +0800</pubDate><description><![CDATA[题目大意：有两只青蛙和若干块石头，现在已知这些东西的坐标，两只青蛙A坐标和青蛙B坐标是第一个和第二个坐标，现在A青蛙想要到B青蛙那里去，并且A青蛙可以借助任意石头的跳跃，而从A到B有若干通路，问从A到B的所有通路上的最大边   石头的距离没有直接给出需用距离公式计算

解题思路：一个简单的最短路径变形，只要将d[i]的意义变为从1到i的最大边即可，然后修改下更新条件就可以了

packag]]></description><category></category></item><item><title><![CDATA[POJ 2387 Til the Cows Come Home 最短路 Dijstra]]></title><link>https://blog.youkuaiyun.com/qq_35109846/article/details/71844555</link><guid>https://blog.youkuaiyun.com/qq_35109846/article/details/71844555</guid><author>qq_35109846</author><pubDate>Sat, 13 May 2017 17:13:25 +0800</pubDate><description><![CDATA[题意：给出两个整数T,N，然后输入一些点直接的距离，求N和1之间的最短距离。。
思路：dijkstra求单源最短路，但是要注意判重。
import java.util.*;   
public class Main{   
    public static void main(String args[]){   
        Scanner in=new Scanner(System.i]]></description><category></category></item></channel></rss>